重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

SQL 関数ループでデータ取得

オラクルSQLで、FUNCTIONを作成し、その結果データを取得するSQLを作っています。(下記参照)


begin
buffer := null;

for i IN 1..5 LOOP
buffer := 【関数A(i)】;

END LOOP;
return buffer;

イメージとしては、シーケンス番号(i)によって異なるデータを1つずつ取得したいのですが、
上記のようにすると、1回のループ毎にbufferが書き換えられ、結局最後のデータしか取得できません。
END LOOP前にreturnをはさんでしまうとその時点で関数が終了してしまうので逆に、最初のデータ
しか取得できませんし。

上記のような関数を使う理由は、上記のiを固定(下記で言うi IN 1..5)でなく、
データの個数を可変で取得する仕様を考えているからです。具体的にはMAX関数でシーケンス番号の最大値を用意し、そのデータの個数取得できるようなものを考えています。

固定ならば、下記のようにその個数分関数を記述すればいいですので

【関数A(1)】;
【関数A(2)】;

【関数A(5)】;

記述を1行で個数分のデータを取得できる方法はないでしょうか?

SQLに詳しい方、ぜひご教授ください。

A 回答 (2件)

関数Aの戻り値が文字列なら


buffer := buffer ||【関数A(i)】;
とか。
    • good
    • 0

bufferを配列にすれば。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す