ORACLE字符串拼接


--有三种方法可以实现
--方法一、使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章