コードにユーザー定義型がありますphrase_context_typ。のインスタンスを返す ,functionを呼び出します。phrase_contextphrase_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
これは機能しますが、1回の呼び出しで同等のことを行うことは可能phrase_context functionですか? functionエレガンスのためだけでなく、 内にさらにselectステートメントがあるため、 を 1 回だけ呼び出したいので、 n回function呼び出すと効率が低下します。
私が求めているのは、Oracle SQLで次のようなことが達成できるかどうか、つまり、ユーザー定義型インスタンスを行に効果的にフラット化できるかどうかということだと思います:
select PHRASE_CONTEXT(?, ?, ?, ?, ?).* from dual;
助けてくれて本当にありがとうございます。