我需要搜索某个项目是否存在于集合中。我知道 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
谢谢。