Oracle SQL,是否可以在嵌套选择中使用用户定义的数据类型属性



我有一个pl/sql函数,该函数返回具有属性start_date的数据类型:

create or replace FUNCTION RETURN_OBJ
RETURN my_obj
IS
  obj my_obj;
BEGIN
   obj := my_obj(SYSDATE);
   RETURN obj;
END;
create or replace TYPE my_obj
AS OBJECT (
start_date DATE
);

我可以在简单的选择语句中使用属性,例如

select RETURN_OBJ().start_date FROM DUAL

但是,当我尝试使用虚拟表(例如,为了避免多个函数调用)时,我会发现一个错误:

select obj.start_date from (select RETURN_OBJ() AS obj FROM DUAL)
ORA-00904: "OBJ"."START_DATE": invalid identifier

我是在使用错误的语法,还是不可能?(顺便说一下,我正在使用Oracle 11,尽管客户仍在9中)

非常感谢。

括号: - )

select (obj).start_date from (select RETURN_OBJ() AS obj FROM DUAL)

当您喜欢从对象类型访问函数时,必须使用表别名。尝试这个:

SELECT t.obj.start_date 
FROM (SELECT RETURN_OBJ() AS obj FROM DUAL) t;

最新更新