Oracle
 sql >> база данни >  >> RDS >> Oracle

plsql блок, за да получите резултата от динамичната sql заявка

Това:

dbms_output.put_line(sql_str);

... е това, което отпечатва изхода, което е правилно поведение. Частта DECLARE ми създава впечатлението, че се опитвате да стартирате анонимна функция, нали?

Никога не съм използвал EXECUTE IMMEDIATELY - само следното:

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;

Ако искате да включите свързващи променливи в динамичния 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Различно подреждане по подразбиране между ORACLE и PostgreSQL

  2. Oracle SQL заявка за изключване на редове, съдържащи нецифрови знаци

  3. SQL извикване Макс. номер на ред от временна таблица

  4. DPI-1047:64-битовата клиентска библиотека на Oracle не може да бъде заредена

  5. Jdbc проверка за възможност - освобождаване на точка за запис