この "回避策"の構文は "クリーン"ですか?エラー "レコードまたは行変数を複数項目INTOリストの一部にすることはできません"
は、私が一緒に動作するように、次のオブジェクトがあります。
3210関数は、いくつかの(長い)のロジックを持っていますが、最終的にそれがある:いくつかの条件に基づいて「新しい」レコードを変更する
- 、 「すべて」の配列に「新しい」レコードを追加
- 、
- ヌル-INGの「新しい」レコードを出し、そして
- 秒出力のためにいくつかのブール値を出力する。 (OracleのPL/SQLからの翻訳)以下のように私は私の関数を呼び出す
:
ERROR: record or row variable cannot be part of multiple-item INTO list
LINE 10: select * into lr_token, lt_tokens, lb1, lb2, lb3
私が示唆された回避策はこれです:
do $$
declare
lb1 boolean;
lb2 boolean;
lb3 boolean;
--
lr_token token;
lt_tokens token[];
begin
select * into lr_token, lt_tokens, lb1, lb2, lb3
from p_post_token('', lr_token, lt_tokens);
end$$;
を私はエラーを取得します:
do $$
declare
lb1 boolean;
lb2 boolean;
lb3 boolean;
--
lr_token token;
lt_tokens token[];
--
r record;
begin
select * into r
from p_post_token('', lr_token, lt_tokens);
lr_token := r.token_new;
lt_tokens := r.tokens_all;
lb1 := r.b1;
lb2 := r.b2;
lb3 := r.b3;
end$$;
が、私はダースの場所で関数p_post_tokenを呼び出さなければなりません。このようなコードは、 "長すぎます"。
これは、INOUT/OUTレコードパラメータ+他のINOUT/OUTパラメータを持つ関数からの出力を読み取る唯一の方法ですか? (うまくいけば)「ワンライナー」アプローチはありますか?