En VRAC RECUEILLIR dans un tableau d'objets

Lorsque vous tentez d'utiliser un BULK COLLECT déclaration, je suis d'erreur ORA-00947: not enough values.

Un exemple de script:

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;

L'erreur se produit à la ligne select * BULK COLLECT INTO atReport.

Droite PL/SQL fonctionne très bien par le chemin (donc pas besoin de le mentionner comme une solution). L'utilisation de BULK COLLECT dans une table utilisateur type est la question.

OriginalL'auteur xacinay | 2013-05-17