プロが教える店舗&オフィスのセキュリティ対策術

以下の様なテーブルから
SELECT分で条件をWHERE CODE = '0001' の様に指定して
求まった結果を1つの文字列にしたいのですが
良い方法がありましたら、教えて下さい。

SELECT * from testtbl;
CODE NAME
-------------------------------
0001 AAAA
0001 BBBB
0002 CCCC
0003 DDDD

この例だと、
SELECT NAME FROM testtbl WHERE CODE = '0001'の様な形で
NAMEの部分の結果として,'AAAA,BBBB'の文字列を取得したいです。
ファンクションとかで実現できるでしょうか?

A 回答 (1件)

ファンクションで実現できます。



入力パラメータ=コードのファンクション(ftest)の例

create or replace function
ftest(ccode in varchar2) return varchar2 is
 cout varchar2(1000) := null;
 cursor c1 is
  select name from testtbl
  where code = ccode
  order by name;
begin
 for c1_rec in c1 loop
  if cout is null then
   cout := c1_rec.name;
  else
   cout := cout || ',' || c1_rec.name;
  end if;
 end loop;
 return cout;
end;
/

<実行例>
SQL> select ftest('0001') from dual;

ftest('0001')
--------------------
AAAA,BBBB
    • good
    • 0
この回答へのお礼

参考にさせて頂き、実現できました。
ありがとうございました。

お礼日時:2007/11/08 06:55

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