SQLServerのストアードをPostgres9.4のpgplsqlに移植しています。
SQLServerのストアードの基本的な構造は、ストーアドファンクションの戻り値に処理が成功したか否かを示すvarchra型(DB発行のエラーコードをセットする場合もある)、OUT引数には処理に応じてレコードセットや処理結果をセットしています。
pgplsqlで、以下のサンプルコードを書くと、エラーが発生します。
【エラーの内容】
ERROR: OUT パラメータのない関数では、RETURN にはパラメータを指定できません
行 10: return c_ok;
【サンプルコード】
create or replace function sample(
i_prm in varchar,
o_rs out varchar)
returns varchar as
$$
declare
c_ok varchar := 'ok';
begin
o_rs := '最終的にはここをレコードセットにしたい';
return c_ok;
end;
$$ language plpgsql;
【質問】
pgplsqlでは、OUT引数があるとき、ストアードファンクションの戻り値を書くことはできないのでしょうか?つまり、OUT引数を書くときのストアードは戻り値なしにしなければ文法上エラーになるのか、という質問です。
※ストアードファンクションの戻り値を書かずに、戻り値の部分をOUT引数(上記の場合OUT引数が2個になる)にすればエラーにならない事は確認しています。
ただ、今までの構成が、前段に書きました通り、戻り値とOUT引数を組み合わせて作成しているので、出来るだけ同じ構成にしたいと考えております。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー