【发布时间】:2010-11-23 18:48:47
【问题描述】:
我创建了一个简单的类型:
create or replace TYPE SIMPLE_TYPE AS OBJECT (ID NUMBER(38), NAME VARCHAR2(20));
简单测试:
DECLARE
TYPE ObjectList IS TABLE OF SIMPLE_TYPE;
tmp SIMPLE_TYPE := SIMPLE_TYPE(1, 'a');
o ObjectList := new ObjectList(SIMPLE_TYPE(2, 'a'), SIMPLE_TYPE(3, 'a'));
BEGIN
IF tmp.EXISTS(tmp) THEN
dbms_output.put_line('OK, exists.');
END IF;
END;
我得到一个异常:PLS-00302:必须声明组件“EXISTS”
但是这个例子有效:
DECLARE
TYPE NumList IS TABLE OF INTEGER;
n NumList := NumList(1,3,5,7);
BEGIN
n.DELETE(2);
IF n.EXISTS(1) THEN
dbms_output.put_line('OK, element #1 exists.');
END IF;
IF n.EXISTS(3) = FALSE THEN
dbms_output.put_line('OK, element #2 has been deleted.');
END IF;
IF n.EXISTS(99) = FALSE THEN
dbms_output.put_line('OK, element #99 does not exist at all.');
END IF;
END;
是否可以在 SIMPLE_TYPE 类型中实现 EXISTS 方法?
【问题讨论】:
-
您确定要
tmp.EXISTS,而不是o.EXISTS?tmp是标量,即使您更正了它的类型。这不是一个集合。
标签: oracle stored-procedures exists user-defined-types