SQL语句中不允许使用本地集合类型-在个人TABLE上使用IN关键字时

时间:2019-01-23 10:10:03

标签: sql arrays oracle plsql

我必须在输入过程中传递一个数字列表。我定义了一个数字表,而不是在互联网上找到的varray,但仍然出现错误:

  

PLS-00642:SQL语句中不允许使用本地集合类型

类型定义:

TYPE liste IS TABLE OF NUMBER;

程序定义:

PROCEDURE myproc(
IN_COMM_ID IN liste);

程序的主体:

SELECT 
      COUNT (ID) 
FROM
     MESSAGGE
WHERE
     ID IN IN_COMM_ID;

如何正确执行到where条件的迭代?

1 个答案:

答案 0 :(得分:0)

总而言之,您遇到的820P, CASH, CCSH, COLL, CRED, RSH 错误告诉您SQL语句中有一个本地定义的集合类型。看来问题出在定义类型的PL / SQL中的数组,如下所示:

PLS-00642

为避免使用TYPE liste IS TABLE OF NUMBER; ,将需要在模式级别定义集合;因此,您需要使用带有CREATE TYPE语法的Oracle DDL将varray表定义为真实表。