Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 存储过程保存在表变量中的结果_Oracle_Stored Procedures_Plsql - Fatal编程技术网

Oracle 存储过程保存在表变量中的结果

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;

我有一个问题:我有一个存储过程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;
    -- 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。。。。像那样。。