Ich habe eine gespeicherte Prozedur, die den Befehl EXECUTE IMMEDIATE
verwendet, um eine sehr lange Zeichenfolge auszuführen. Wie unterstütze ich einen sehr langen String und gebe die Daten in einen Refcursor zurück?Oracle EXECUTE IMMEDIATE in einen Cursor
7
A
Antwort
0
Verwenden Sie 11gR2 und DBMS_SQL.to_refcursor.
12
Unter der Annahme, dass Ihr SQL nicht länger als 32 KB (als @Tony Andrews angedeutet), sollten Sie in der Lage sein, so etwas zu verwenden:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Bei der Arbeit mit Ref Cursors kann open-for
direkt verwendet werden , anstelle von execute immediate
.
Wie lange ist "sehr lang"? Mehr als 32K? –
Welche Datenbankversion? – DCookie