Oracle 存储过程保存在表变量中的结果
我有一个问题:我有一个存储过程Areturn三个out参数。我想在循环中调用过程A,将这三个参数插入临时表并返回这个表Oracle 存储过程保存在表变量中的结果,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我有一个问题:我有一个存储过程Areturn三个out参数。我想在循环中调用过程A,将这三个参数插入临时表并返回这个表 DECLARE Type TestTable IS TABE OF NUMBER; -- for example one parameter!!! myTable TestTable; BEGIN LOOP A(o_param1, o_param2, o_param3); -- myTable insert o_param1,2,3;
DECLARE
Type TestTable IS TABE OF NUMBER; -- for example one parameter!!!
myTable TestTable;
BEGIN
LOOP
A(o_param1, o_param2, o_param3);
-- myTable insert o_param1,2,3;
-- insert into myTable values(99); - here I have error PL/SQL: ORA-00942: table or view does not exist
END LOOP;
SELECT * FROM myTable;
END;
我不知道怎么做-myTable插入o_param1,2,3;。请帮助我。在循环中写入insert语句。因此,对于每个循环,可以将值插入到表中,并在循环后提交 但匿名块中不能有select*from表。将其从挡块上移除,并在结束后移除;您可以尝试运行select*from table以查看输出
BEGIN
LOOP
A(o_param1, o_param2, o_param3);
-- myTable insert o_param1,2,3;
insert into myTable values (o_param1, o_param2, o_param3);
END LOOP;
commit;
--SELECT * FROM myTable;-
END;
SELECT * FROM myTable;
> Blockquote
首先,您不能将数据直接插入myTable insert到myTable中,因为在脚本的declare部分中声明的Oracle表类型在sql语句中不可见。exception-insert使用“bulk collect”和Oracle dictionary中声明的类型进行插入。 即使您使用myTableidx在myTable中插入数据。。。您不能在脚本外部选择它,因为myTable仅存在于脚本内部。
我认为最简单的方法是创建普通表或全局临时表。如果要使用全局临时表,请使用“提交时保留行”创建它,如果在插入后使用提交如果myTabe是在当前代码中创建的临时表??声明类型,myTAble类型表;如果是表类型定义,则必须为其中的每一列指定值,例如myTableindx.o_param1:=o_param1。。。。像那样。。