【发布时间】:2011-06-10 11:50:39
【问题描述】:
我有一个存储过程,它使用EXECUTE IMMEDIATE 命令来执行一个很长的字符串。如何支持很长的字符串并将数据返回到引用器中?
【问题讨论】:
-
“很长”有多长?超过 32K?
标签: sql oracle stored-procedures dynamic-sql sys-refcursor
我有一个存储过程,它使用EXECUTE IMMEDIATE 命令来执行一个很长的字符串。如何支持很长的字符串并将数据返回到引用器中?
【问题讨论】:
标签: sql oracle stored-procedures dynamic-sql sys-refcursor
假设你的 SQL 不超过 32K(正如@Tony Andrews 暗示的那样),你应该可以使用这样的东西:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
使用 Ref Cursors 时,可以直接使用 open-for,而不是 execute immediate。
【讨论】: