4
我读了约IS OF TYPE,我预计它应该返回TRUE,FALSE或NULL。IS OF TYPE产生一个异常
我有两个对象类型:
CREATE TYPE o1 AS OBJECT (id NUMBER);
/
CREATE TYPE o2 AS OBJECT (id NUMBER);
/
当我运行下面的代码,一切正常。
DECLARE
type1 o1;
BEGIN
type1 := o1(id=>1);
if (type1 IS OF (o1)) then
DBMS_OUTPUT.PUT_LINE('type1 is o1');
END if;
END;
/
但是当我尝试运行:
DECLARE
type1 o1;
BEGIN
type1 := o1(id=>1);
if (type1 IS OF (o2)) then
DBMS_OUTPUT.PUT_LINE('type1 is o1');
END if;
END;
/
我收到了以下异常
Error report:
ORA-06550: line 6, column 21:
PLS-00382: expression is of wrong type
ORA-06550: line 6, column 4:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
在本文档中没有明确的解释,我应该赶上例外,如果事情是错误的类型?或者,我是否应该在IF条件下期望错误?
谢谢(我知道 - 但想检查任何类型),对我来说很奇怪,在这种情况下,文档不太清楚。有没有其他的选择(我知道可以投到任何一个然后获取名称,可以与user_types视图进行比较)? – reichel
我已经更新了答案。 –
是的,我写了关于这个解决方案,但我认为有一些像IS OF一样简单。如果有人知道其他解决方案,请写下,这(半)解决我的问题。谢谢。 – reichel