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