Oracle 自定义函数中的sql语句的 单引号嵌套单引号的处理 + 仿 Mysql 中的 group_cat()
2014-03-28 15:26
936 查看
CREATE OR REPLACE FUNCTION F_CONCAT_ROW_COMMUNITY_LABEL(p_field IN VARCHAR2,
p_parent_id IN VARCHAR2,
p_splicing IN VARCHAR2)
RETURN VARCHAR2 IS
retResult VARCHAR2(32767);
TYPE cur_type IS REF CURSOR;
rscur cur_type;
rsVal VARCHAR2(2000);
cnt INTEGER;
BEGIN
cnt := 0;
OPEN rscur FOR 'select distinct cl.' || p_field || ' from community_label cl join bkm_relation br on(br.child_id = cl.id)
where br.relation_type = ''2'' and br.parent_id in (
select v.id from v_community_knowledge v
where v.deleted_flag = ''0'' and v.root_id = (
select v2.root_id from v_community_knowledge v2
where v2.id =''' || p_parent_id || ''' ))';
LOOP
FETCH rscur
INTO rsVal;
EXIT WHEN rscur%NOTFOUND;
IF cnt > 0 THEN
retResult := retResult || p_splicing;
END IF;
retResult := retResult || rsVal;
cnt := cnt + 1;
END LOOP;
CLOSE rscur;
return retResult;
EXCEPTION
-- exception handlers begin
WHEN VALUE_ERROR THEN
--
retResult := '';
RETURN retResult;
END F_CONCAT_ROW_COMMUNITY_LABEL;
/**
* example: select F_CONCAT_ROW('id','community_kn_catagory','3',id,',') from community_knowledge;
* 2013/3/11
**/
p_parent_id IN VARCHAR2,
p_splicing IN VARCHAR2)
RETURN VARCHAR2 IS
retResult VARCHAR2(32767);
TYPE cur_type IS REF CURSOR;
rscur cur_type;
rsVal VARCHAR2(2000);
cnt INTEGER;
BEGIN
cnt := 0;
OPEN rscur FOR 'select distinct cl.' || p_field || ' from community_label cl join bkm_relation br on(br.child_id = cl.id)
where br.relation_type = ''2'' and br.parent_id in (
select v.id from v_community_knowledge v
where v.deleted_flag = ''0'' and v.root_id = (
select v2.root_id from v_community_knowledge v2
where v2.id =''' || p_parent_id || ''' ))';
LOOP
FETCH rscur
INTO rsVal;
EXIT WHEN rscur%NOTFOUND;
IF cnt > 0 THEN
retResult := retResult || p_splicing;
END IF;
retResult := retResult || rsVal;
cnt := cnt + 1;
END LOOP;
CLOSE rscur;
return retResult;
EXCEPTION
-- exception handlers begin
WHEN VALUE_ERROR THEN
--
retResult := '';
RETURN retResult;
END F_CONCAT_ROW_COMMUNITY_LABEL;
/**
* example: select F_CONCAT_ROW('id','community_kn_catagory','3',id,',') from community_knowledge;
* 2013/3/11
**/
相关文章推荐
- mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()
- sql语句中decode()函数的嵌套(oracle)
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- Oracle和Mysql中Sql语句中的一些函数用法区别
- 【Oracle】PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR
- [Oracle]高效的SQL语句之分析函数(三)--row_number() /rank()/dense_rank()
- SQL server、MySQL、Oracle分页查询SQL语句
- Access里自定义类似MySQL group_concat 的函数
- 跨平台SQL语句模版 - SQL Server, MySQL, Oracle
- oracle动态sql语句处理
- oracle trunc 函数处理日期格式,日期类型很有用的几个sql
- Oracle 仿 mysql的group_concat()函数
- Oracle 游标 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
- oracle移植至mysql相关sql语句
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- Oracle的SQL语句中如何处理‘&’符号
- Access里自定义类似MySQL group_concat 的函数
- Mysql 将数据库中的手机号码,以前4位+****+后三位整表查询处理 SQL语句
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- Oracle index】SQL语句利用函数索引注意点