sql >> Databasteknik >  >> RDS >> Oracle

PLSQL dynamisk fråga

Dynamisk SQL kan inte se din PL/SQL-variabel:du måste skicka en sträng till den som kan köras inom SQL-motorns omfattning. Så du måste sammanfoga tabellnamnet med påståendets standardtext:

query1 := 'SELECT max(c)  FROM ' || variable_name;

Du måste också returnera resultatet av frågan till en variabel.

Så här fungerar det (jag har tagit bort en del av den onödiga koden från ditt exempel):

DECLARE    
 c_table VARCHAR2(40);
 c_obj VARCHAR2(20);
BEGIN
   for lrec in ( select a as tab_name from A )
   LOOP
      EXECUTE IMMEDIATE 'SELECT max(object_ref)  FROM ' || lrec.tab_name 
           into c_obj ;
      dbms_output.put_line('Maximum value: '|| lrec.tab_name
           || '='|| c_obj);
   END LOOP;
END;


  1. MySQL COUNT() – Få antalet rader som ska returneras av en fråga

  2. Hur man lägger till AD/BC-indikatorn till ett datum i Oracle

  3. Konvertera hexsträng till bigint i Postgres

  4. Hur man beviljar alla privilegier på vyer till godtyckliga användare