尝试使用BULK COLLECT
语句时出现错误ORA-00947: not enough values
。
一个示例脚本:
CREATE OR REPLACE
TYPE company_t AS OBJECT (
Company VARCHAR2(30),
ClientCnt INTEGER );
/
CREATE OR REPLACE
TYPE company_set AS TABLE OF company_t;
/
CREATE OR REPLACE
FUNCTION piped_set (
v_DateBegin IN DATE,
v_DateEnd IN DATE
)
return NUMBER /*company_set pipelined*/ as
v_buf company_t := company_t( NULL, NULL);
atReport company_set;
sql_stmt VARCHAR2(500) := '';
begin
select * BULK COLLECT INTO atReport
from (
SELECT 'Descr1', 1 from dual
UNION
SELECT 'Descr2', 2 from dual ) ;
return 1;
end;
错误发生在该行select * BULK COLLECT INTO atReport
。
顺便说一句,直接的 PL/SQL 可以正常工作(因此无需将其作为解决方案提及)。BULK COLLECT
用户表类型的用法是个问题。