项目中一个有用的函数

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF
GO


create FUNCTION dbo.fun_sys_GetTableBySplit --返回表
(
@str varchar(8000), --字符串 如: ",1,2,3,"
@splitstr nvarchar(10) --分隔符 如: ","
)
RETURNS @retTables TABLE
(
No int,
MyName nvarchar(50)
)
AS
BEGIN
declare @i int, @j int,@count int,@splitstrlen int
set @i=1
set @j=1
set @count=1
set @splitstrlen=len(@splitstr)
if left(@str,len(@splitstr))!=@splitstr
set @str= substring(@str,CHARINDEX(@splitstr,@str,@i+@splitstrlen),len(@str)-CHARINDEX(@splitstr,@str,@i+@splitstrlen)+1)
while(@i>0)
begin
set @j=@i+@splitstrlen;
set @i=CHARINDEX(@splitstr,@str,@i+@splitstrlen)
if(@i-@j>=0)
begin
insert @retTables values(@count,substring(@str,@j,@i-@j))
set @count=@count+1
end
end
RETURN
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO




CREATE OR REPLACE FUNCTION rowtocol( p_slct IN VARCHAR2,

p_dlmtr IN VARCHAR2 DEFAULT ', ' ) RETURN VARCHAR2

AUTHID CURRENT_USER AS


TYPE c_refcur IS REF CURSOR;

lc_str VARCHAR2(4000);

lc_colval VARCHAR2(4000);

c_dummy c_refcur;

l number;


BEGIN


OPEN c_dummy FOR p_slct;


LOOP

FETCH c_dummy INTO lc_colval;

EXIT WHEN c_dummy%NOTFOUND;

lc_str := lc_str || p_dlmtr || lc_colval;

END LOOP;

CLOSE c_dummy;


RETURN SUBSTR(lc_str,2);

EXCEPTION

WHEN OTHERS THEN


lc_str := SQLERRM;

IF c_dummy%ISOPEN THEN

CLOSE c_dummy;

END IF;

RETURN lc_str;


END;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值