sql >> Database >  >> RDS >> Oracle

PLSQL dynamische query

Dynamische SQL kan uw PL/SQL-variabele niet zien:u moet er een string aan doorgeven die kan worden uitgevoerd in het kader van de SQL-engine. U moet dus de tabelnaam samenvoegen met de standaardtekst van het statement:

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

U moet ook het resultaat van de zoekopdracht in een variabele retourneren.

Hier is hoe het werkt (ik heb een deel van de onnodige code uit je voorbeeld verwijderd):

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. Voorwaardelijke WHERE-clausule met CASE-instructie in Oracle

  2. Hoe de laatste 6 maanden uit de nieuwstabel te selecteren met MySQL

  3. PostgreSQL 9.5 - update werkt niet bij het samenvoegen van NULL met JSON

  4. Verbindingsreeksparameters voor opgeslagen specificaties