sql >> Database teknologi >  >> RDS >> Oracle

PLSQL dynamisk forespørgsel

Dynamisk SQL kan ikke se din PL/SQL-variabel:du skal sende den en streng, som kan udføres inden for SQL-motorens omfang. Så du skal sammenkæde tabelnavnet med udsagnets kedeltekst:

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

Du skal også returnere resultatet af forespørgslen til en variabel.

Sådan fungerer det (jeg har fjernet noget af den unødvendige kode fra dit eksempel):

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. Sådan starter parallelle planer - del 4

  2. distinct() funktion (ikke vælg qualifier) ​​i postgres

  3. Fast ved denne fejl:Forkert heltalsværdi:'' for kolonne '____' i række 1

  4. Opretter du en søgeformular i PHP for at søge i en database?