我的代码中有一个用户定义的类型,phrase_context_typ. 我调用一个function, phrase_context,它返回一个phrase_context_typ.
用户定义类型定义如下:
CREATE OR REPLACE type phrase_context_typ AS OBJECT (
context VARCHAR2(13),
parent_id NUMBER(10)
)
我有一个VIEW包含CONTEXT和PARENT_ID列。我想根据实例VIEW中存在的值从中进行选择。phrase_context_typ
我可以通过以下方式做到这一点:
select distinct(col)
from my_view v
where v.parent_id = PHRASE_CONTEXT(?, ?, ?, ?, ?).parent_id
and
v.context = PHRASE_CONTEXT(?, ?, ?, ?, ?).context
这可行,但是否可以只调用一次phrase_context function? 我只想调用function一次,不仅是为了优雅,还因为在select调用n次function时会影响效率。
我想我要问的是,如果可以在 Oracle SQL 中实现以下功能,即有效地将用户定义的类型实例扁平化为一行:
select PHRASE_CONTEXT(?, ?, ?, ?, ?).* from dual;
非常感谢您的帮助。