ora-00947更新时“值不足”将批量收集返回到用户创建的类型表中

kiz8lqtg  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(295)

我在尝试批量收集到表类型时遇到以下错误:ora-00947“值不足”
我需要创建一个数据库级类型来使用我的应用程序访问结果集(opencursor)。
文件:foo\u status.sql

CREATE OR REPLACE TYPE "FOO_STATUS" AS OBJECT
(
   a NUMBER,
   b NUMBER,
   c NUMBER
);
/

文件:foo\ u status\ u table.sql

CREATE OR REPLACE TYPE FOO_STATUS_TABLE IS TABLE OF FOO_STATUS;
/

包裹:

PROCEDURE foo
(
  ...
)
IS
  l_foo FOO_STATUS_TABLE := FOO_STATUS_TABLE();
BEGIN
      UPDATE foo_table
      SET ...
      WHERE ...
      RETURNING foo_table_a, foo_table_b, c BULK COLLECT INTO l_foo; -- ERROR: ORA-00947

OPEN p_results FOR
    SELECT
      foo_results.a   AS a,
      foo_results.b   AS b,
      foo_results.c   AS c,
      other.d         AS d
    FROM
      TABLE( l_foo ) foo_results INNER JOIN other_table other ON foo_results.obj = other.obj
END;
fruv7luv

fruv7luv1#

因为loufoo是一个对象表,所以您需要将对象收集到这个集合中,而不是像这样的值

returning foo_status(a, b, c) bulk collect into l_foo

小提琴示例

相关问题