新しいTYPEを作成せずに複数の値を返す関数(oracle 11g)を作成したいと思います。最終的な目標は私が提供している例よりはるかに複雑ですが、戻り値を得ることを除いて、他のすべてをほとんど行うことができます。新しいタイプを作成せずにORACLE関数を返す
ここでは、私が問題を抱えているものの非常に単純化されたバージョンです。次の表(従業員)与えられた例えば
:
emplid | emplname | emplchildren
478 |SAM |"GEORGE,RON"
479 |JOSE |"RICHARD,JANE,RACHEL"
480 |PAM |"JORDAN"
私は返すために、次の文select CHILD_FN from employees
をしたいと思います:
GEORGE
RON
RIRCHARD
JANE
RACHEL
JORDAN
これは私が悩みを抱えている部分を示すために簡略化されて ここにサンプルコードを示します:
create or replace function CHILD_FN RETURN employee.emplname%TYPE IS
chldnames employee.emplname%TYPE;
CURSOR child_cur
IS
Select emplchildren FROM employees;
begin
/*do complicated parsing to separate each delimited
value of child_cur and assign
it to a new row in the names_col variable/
/*how do I add values to the names_col variable? I've tried
'chldnames.extend',
various types of 'bulk collect into chldnames'
and they all give various errors*/
return chldnames;
end LOCAL_TEST_FN;
戻り値の型を変更する必要がありますか、または正しく宣言されていませんか?
私は完全に新しいタイプのデータベースを作成しているわけではありません。新しいタイプを作成する必要がなくても、私はもっと複雑なものを作ることができます。その周りに道があるなら、私はその道を学び、どちらが良いのかを判断することを好むでしょう。
詳細をお知らせください。