聚合拼接字符串的方法

Oracle-sql中创建聚合字符串函数:

(测试过,可以使用。子表某一列所有内容拼接成一个字符串,以逗号分隔)

首先要为子表赋权限: 

         Oracle-command中输入(要在system用户下):grant select , insert ,update on 表名 to 用户;

 

A:一个关联键

create or replace function PUBLIC_TOGETHER( key_name in varchar2,

                    key  in varchar2,

                    coname in varchar2,

                    tname     in varchar2 )

 return varchar2

as

    type rc is ref cursor;

    str    varchar2(4000);

    sep    varchar2(2);

    val    varchar2(4000);

    cur    rc;

begin

    open cur for 'select '||coname||'

                    from '|| tname || '

                    where ' || key_name || ' = :x '

                using key;

    loop

        fetch cur into val;

        exit when cur%notfound;

        str := str || sep || val;

        sep := ', ';

    end loop;

    close cur;

    return str;

end;

 

B: 三个关联键

create or replace function TOGETHER_THREE_PARAM( key1_name in varchar2,

                    key1  in varchar2,

                    key2_name in varchar2,

                    key2  in varchar2,

                    key3_name in varchar2,

                    key3  in varchar2,

                    coname in varchar2,

                    tname     in varchar2 )

 return varchar2

as

    type rc is ref cursor;

    str    varchar2(4000);

    sep    varchar2(2);

    val    varchar2(4000);

    cur    rc;

begin

    open cur for 'select '||coname||'

                    from '|| tname || '

                    where ' || key1_name || ' = :x ' ||

                    'and ' || key2_name || ' = :y ' ||

                    'and ' || key3_name || ' = :z '

                using key1,key2,key3;

    loop

        fetch cur into val;

        exit when cur%notfound;

        str := str || sep || val;

        sep := ', ';

    end loop;

    close cur;

    return str;

end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值