Локальные типы коллекций не допускаются в инструкциях SQL - при использовании ключевого слова IN в личной таблице TABLE - PullRequest
0 голосов
/ 23 января 2019

Я должен передать список чисел при вводе в процедуру. Я определил таблицу чисел вместо 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 голосов
/ 23 января 2019

В общем, ошибка PLS-00642, которую вы получаете, говорит о том, что в вашем выражении SQL есть локально определенный тип коллекции. Похоже, что проблема связана с массивом в PL / SQL, где вы определили тип, как показано ниже:

TYPE liste IS TABLE OF NUMBER;

Чтобы избежать PLS-00642, коллекция должна быть определена на уровне схемы; поэтому вам необходимо определить таблицу varray как реальную таблицу, используя Oracle DDL с синтаксисом CREATE TYPE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...