2011-01-17 2 views
7

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

+4

Quanto è "molto lungo"? Più di 32K? –

+0

Quale versione del database? – DCookie

risposta

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.