0
我必须使用现有的存储过程,它返回REF CURSOR
。我需要将该resultset
插入临时表中。程序将存储的proc转换为表以便能够在select语句中使用
规格是:
TYPE cur IS REF CURSOR;
PROCEDURE get(p_one NUMBER ,p_two OUT cur);
我如何可以插入这个程序的resultset
到表。
我必须使用现有的存储过程,它返回REF CURSOR
。我需要将该resultset
插入临时表中。程序将存储的proc转换为表以便能够在select语句中使用
规格是:
TYPE cur IS REF CURSOR;
PROCEDURE get(p_one NUMBER ,p_two OUT cur);
我如何可以插入这个程序的resultset
到表。
我刚刚重读了你的问题的标题。你真的需要能够从程序中选择吗?
如果是这样,这可以通过使用流水线功能来实现。
这个过程是:
这个例子应该让你对你的方式:
create or replace type to_test as object (
val1 varchar2(32),
val2 varchar2(32)
);
create or replace type tt_test as table of to_test;
create or replace function demo_pipe return tt_test pipelined
is
v_test to_test;
begin
for rec in (select * from user_tables) loop
v_test := to_test(rec.table_name, rec.tablespace_name);
pipe row (v_test);
end loop;
end;
/
select * from table(demo_pipe);
你知道结果设置这个光标将返回的结构?或者你是否试图处理一个通用的弱类型引用游标'OUT'参数(换句话说,结果的结构可能会改变)?你已经创建了临时表吗? – 2014-11-03 23:12:06
@JustinCave是的,我已经创建了临时表。但是请让我知道是否可以处理通用的弱类型光标。谢谢。 – user1663715 2014-11-03 23:35:23
如何将通用的弱类型引用光标的数据放入强类型的现有临时表中。这通常是没有意义的,所以我强烈建议重新考虑这种方法。如果您知道正在返回的游标的结构并且与您创建的临时表的结构相匹配,那么从技术上来说它并不难,尽管它在架构上仍然有点关注。 – 2014-11-03 23:38:00