Mam procedura składowana, która użyła polecenia EXECUTE IMMEDIATE
do wykonania bardzo długiego łańcucha. Jak mogę obsłużyć bardzo długi ciąg i zwrócić dane do refcursora?Oracle WYKONAJ NATYCHMIAST do kursora
7
A
Odpowiedz
0
Użyj 11gR2 i DBMS_SQL.to_refcursor.
12
Zakładając, że SQL jest nie dłuższy niż 32K (jak @Tony Andrews zasugerował), powinieneś móc używać coś takiego:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Podczas pracy z Ref kursorów open-for
można stosować bezpośrednio zamiast execute immediate
.
Jak długo jest "bardzo długo"? Więcej niż 32K? –
Jaką wersję bazy danych? – DCookie