こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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に詳しい方、ぜひご教授ください。

投稿日時 - 2010-10-13 14:38:14

QNo.6247217

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

関数Aの戻り値が文字列なら
buffer := buffer ||【関数A(i)】;
とか。

投稿日時 - 2010-10-13 16:15:46

ANo.1

bufferを配列にすれば。

投稿日時 - 2010-10-13 15:30:06

あなたにオススメの質問