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

plsql-blok for at få det dynamiske sql-forespørgselsresultat

Dette:

dbms_output.put_line(sql_str);

... er det, der udskriver output, hvilket er korrekt adfærd. DECLARE-delen giver mig det indtryk, at du forsøger at køre en anonym funktion, ikke sandt?

Jeg har aldrig brugt EXECUTE IMMEDIATELY - kun følgende:

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;

Hvis du vil inkludere bindevariabler i den dynamiske 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. Opret rumenhed til en tabel, som har et felt med LANG datatype i Sqlite

  2. Hvordan ændres negativ værdi til positiv i Oracle?

  3. SQL-server-identitetskolonneværdier starter ved 0 i stedet for 1

  4. Hybrid Cloud PostgreSQL-implementeringstip