sql >> Databasteknik >  >> RDS >> Oracle

plsql-block för att få det dynamiska sql-frågeresultatet

Detta:

dbms_output.put_line(sql_str);

...är det som skriver ut resultatet, vilket är korrekt beteende. DECLARE-delen ger mig intrycket av att du försöker köra en anonym funktion, eller hur?

Jag har aldrig använt EXECUTE IMMEDIATELY - bara följande:

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;

Om du vill inkludera bindningsvariabler i dynamisk SQL:

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. Flera ladda upp bilder till Mysql-databasen

  2. hoppa över kopiering till tmp-tabell på disk mysql

  3. Hur kan jag returnera pivottabellutdata i MySQL?

  4. Hur man distribuerar mycket tillgänglig PostgreSQL med en enda slutpunkt för WordPress