Ho una stored procedure che utilizzava il comando EXECUTE IMMEDIATE
per eseguire una stringa molto lunga. Come supporto una stringa molto lunga e restituisco i dati in un refcursor?Oracle ESEGUI IMMEDIATO in un cursore
7
A
risposta
0
Utilizzare 11gR2 e DBMS_SQL.to_refcursor.
12
Supponendo che il vostro SQL non è più lungo di 32 K (come @Tony Andrews accennato), si dovrebbe essere in grado di usare qualcosa di simile:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Quando si lavora con Ref cursori, open-for
può essere utilizzato direttamente , invece di execute immediate
.
Quanto è "molto lungo"? Più di 32K? –
Quale versione del database? – DCookie