我熟悉Oracle的对象,嵌套表,table()函数等 . 但是有可能创建对象类型,例如:两个varchar2列并选择该类型作为列而不创建该对象类型的嵌套表类型?
我试图创建返回它的类型和函数 . 并选择该函数结果,但结果显示对象类型(不是我想要的列) . 使用表类型,可以很容易地使用table()将对象类型字段转换为常规列 .
我需要这样:
SELECT MY_FUNC(params)
FROM DUAL
结果将是:
|field 1| |field 2|
txt1 txt2
但现在的结果是:
|MY_FUNC(params)|
(txt1; txt2)
3 回答
我认为没有任何方法可以直接将对象视为表,而无需根据对象声明嵌套表类型 . 但是,如果您要避免修改函数,可以通过在SQL语句中转换函数结果来实现:
您可以使用Oracle对象返回多个数据 . 考虑:
我可能会用pipelined table function这样做,所以它看起来像:
然后可以查询为:
哪个回报: