我想将表列(列类型为整数)中的值赋给整数数组。不幸的是我不能。
- 类型 -
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
答案 0 :(得分:5)
您需要使用 BULK COLLECT 子句将结果集存储到集合变量中。
请研究SELECT INTO
声明的文档:
https://docs.oracle.com/database/121/LNPLS/selectinto_statement.htm#LNPLS01345
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;