sql >> Database >  >> RDS >> Oracle

plsql-blok om het dynamische SQL-queryresultaat te krijgen

Dit:

dbms_output.put_line(sql_str);

... is wat de uitvoer afdrukt, wat correct gedrag is. Het DECLARE-gedeelte geeft me de indruk dat u een anonieme functie probeert uit te voeren, correct?

Ik heb nog nooit EXECUTE ONMIDDELLIJK gebruikt - alleen het volgende:

FUNCTION MY_FUNCTION()
RETURN SYS_REFCURSOR

L_CURSOR SYS_REFCURSOR;
L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';

BEGIN

  OPEN L_CURSOR FOR L_QUERY;
  RETURN L_CURSOR;

END;

Als u bindvariabelen in de dynamische SQL wilt opnemen:

FUNCTION MY_FUNCTION()
RETURN SYS_REFCURSOR

L_CURSOR SYS_REFCURSOR;
L_QUERY  VARCHAR2(5000) DEFAULT 'SELECT ...';

BEGIN

  OPEN L_CURSOR FOR L_QUERY
   USING bind_var1;
  RETURN L_CURSOR;

END;


  1. Kohana installeren op OpenShift?

  2. Nummerreeks generator uitdaging oplossingen - Deel 3

  3. Vereenvoudiging van het testen van eenheden Belangrijkste opgeslagen procedure die ook een hulpprogramma-procedure aanroept

  4. CDbConnection kon de DB-verbinding niet openen:kon het stuurprogramma niet vinden in Yii