SYS_REFCURSOR を返すオラクル関数を作成しました。問題は、返す必要があるデータが 2 つの異なるクエリによって生成される可能性があることです。基本的に、最初のクエリがデータを返さない場合は、別のクエリを実行してから refcursor を返す必要があります。
これが私の大きなアイデアです
FUNCTION F_RETURN_RECORD(
P_VAL in NUMBER)
RETURN SYS_REFCURSOR AS TYPE R_CURSOR IS REF CURSOR;
my_record_1 R_CURSOR;
processed_record R_CURSOR;
BEGIN
OPEN my_record_1 FOR select e.COL1, e.COL2,a.COL1,e.COL3, e.COL4,
e.COL5, e.COL6, e.COL7, e.COL8, e.COL9,
e.COL10, e.COL11
from table1 e
inner join table2 a on e.COL2=a.COL2
where e.COL1=P_VAL;
if my_record_1%notfound
then
close my_record_1;
OPEN processed_record for select e.COL1, e.COL2,a.COL1,e.COL3, e.COL4,
e.COL5, e.COL6, e.COL7, e.COL8, e.COL9,
e.COL10, e.COL11, e.COL12, e.COL13, e.COL14
from table3 e
inner join table2 a on e.COL2=a.COL2
inner join table 4 b on a.col1=b.col2
where e.COL1=P_VAL;
return processed_record;
end if;
DBMS_OUTPUT.PUT_LINE('Returning data.................');
return my_record_1;
END F_RETURN_RECORD;
何らかの理由でif my_record_1%notfoundチェックが機能しません。私の質問は、my_record_1カーソルにデータが含まれていないかどうかを確認するにはどうすればよいですか?
ありがとうございました