我在尝试批量收集到表类型时遇到以下错误: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;
1条答案
按热度按时间fruv7luv1#
因为loufoo是一个对象表,所以您需要将对象收集到这个集合中,而不是像这样的值
小提琴示例