sql >> Base de Datos >  >> RDS >> Oracle

bloque plsql para obtener el resultado de la consulta sql dinámica

esto:

dbms_output.put_line(sql_str);

... es lo que está imprimiendo la salida, que es el comportamiento correcto. La parte DECLARE me da la impresión de que está intentando ejecutar una función anónima, ¿correcto?

Nunca he usado EJECUTAR INMEDIATAMENTE, solo lo siguiente:

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;

Si desea incluir variables de vinculación en el SQL dinámico:

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;