--有三種方法可以實現
--方法一、使用wmsys.wm_concat Oracle版本要求10g及以上
--方法二、使用sys_connect_by_path Oracle版本在9i及以下
--方法三、使用自定義函數
--我來給你寫給自定義函數實現的例子
--查看員工表中部門爲10的員工姓名
--自定義函數實現
create or replace function my_concat(p_deptno in integer)
return varchar2 --記住:參數和返回值裏的數據類型都不用定義長度
is
result varchar2(4000); --定義變量,記住Oracle中定義變量不需要
begin
for temp_cursor in (select ename from emp where deptno=p_deptno) loop --此處在遊標FOR循環中使用查詢對應部門的所有員工
result :=result || temp_cursor.ename || ',';
end loop;
result := rtrim(result,','); --去掉最後一個空格
return result;
end;
SELECT DISTINCT deptno,my_concat(deptno) name FROM emp WHERE deptno=10;
結果:
DEPTNO NAME
-----------------------
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES,BLACK,MAXTON