选择INTO INTEGER ARRAY

时间:2016-12-31 15:43:30

标签: sql oracle plsql

我想将表列(列类型为整数)中的值赋给整数数组。不幸的是我不能。

- 类型 -

CREATE OR REPLACE TYPE ABILITY_ID_ARRAY IS VARRAY(100) OF INTEGER

- 程序中的声明

ABILITY_IDS ABILITY_ID_ARRAY;

- 声明 -

SELECT ABILITY_FK INTO ABILITY_IDS 
FROM T_EDUCATION_ABILITY_REL 
WHERE EDUCATION_FK = edu_id;

我收到了这个错误:

  

[错误] ORA-00932(16:12):PL / SQL:ORA-00932:不一致的数据类型:预期的UDT得到了NUMBER

1 个答案:

答案 0 :(得分:5)

您需要使用 BULK COLLECT 子句将结果集存储到集合变量中。

请研究SELECT INTO声明的文档: https://docs.oracle.com/database/121/LNPLS/selectinto_statement.htm#LNPLS01345 enter image description here

  

into_clause
  使用此子句,SELECT INTO语句从单行检索一个或多个并将它们存储在一个或   更多标量变量或一个记录变量。

  

bulk_collect_into_clause
使用此子句,SELECT INTO语句检索整个结果集并将其存储在一个或多个中   收集变量

在您的情况下,PL / SQL statament应如下所示:

SELECT ABILITY_FK BULK COLLECT INTO ABILITY_IDS 
FROM T_EDUCATION_ABILITY_REL 
WHERE EDUCATION_FK = edu_id;