0

コレクション内に特定のアイテムが存在するかどうかを検索する必要があります。私は EXISTS 関数を認識していますが、特定のインデックスが占有されている場合にのみ true を返し、アイテムがそのコレクション内にある場合は返しません。

私は次のタイプを持っています:

CREATE OR REPLACE TYPE Person AS OBJECT (
    ID NUMBER(12, 0),
    FIRST_NAME VARCHAR2(100),
    LAST_NAME VARCHAR2(100)
);

CREATE OR REPLACE PACKAGE MY_TYPES AS
    TYPE PersonTable IS TABLE OF Person;
END MYTYPES;

次に、次のことを試します。

DECLARE
    v_Row PERSON := PERSON(NULL, NULL, NULL);
    v_Table MYTYPES.PersonTable := MYTYPES.PersonTable();
BEGIN
    SELECT ID, FIRST_NAME, LAST_NAME INTO v_Row FROM TABLE(v_Table);
END;

しかし、次のエラーを受け取ります:

ORA-06550
PLS-00642: local collection types not allowed in SQL Statements.

私も試しました:

DECLARE
    v_Row PERSON := PERSON(NULL, NULL, NULL);
    v_Table MYTYPES.PersonTable := MYTYPES.PersonTable();
BEGIN
    SELECT ID, FIRST_NAME, LAST_NAME INTO v_Row FROM TABLE(CAST(v_Table AS MYTYPES.PersonTable));
END;

しかし、エラーも受け取ります:

ORA-00902: invalid datatype

ありがとう。

4

1 に答える 1