/*
将多个数组转换为表
第一个数组是主表,另一个数组为从表
分隔符如果null则使用英文逗号
*/
create function ArrayToTable
(
@primaryAry nvarchar(4000),
@valueAry nvarchar(4000),
@splitChr nvarchar(10)
)
returns @tb table([id] nvarchar(50),value nvarchar(500))
as
begin
/*declare
@primaryAry nvarchar(4000),
@valueAry nvarchar(4000),
@splitChr nvarchar(10)
select @primaryAry='1,2,3,4,',@valueAry='1,5,9,8,',@splitChr=','
declare @tb table([id] nvarchar(50),value nvarchar(500))
*/
declare @p nvarchar(50),@v nvarchar(50),@i int
select @primaryAry=isnull(dbo.trimString( @primaryAry,@splitChr)+',',''),
@valueAry=isnull(dbo.trimString(@valueAry,@splitChr)+',',''),
@splitChr=isnull(@splitChr,',')
if @splitChr=''
set @splitChr=','
declare @pcount int,@vcount int
select @pcount=isnull(dbo.ArrLen(@primaryAry,@splitChr),0),@vcount=isnull(dbo.ArrLen(@valueAry,@splitChr),0),@i=0
if @pcount=@vcount and @pcount>0
begin
while @i<@pcount
begin
select @p=dbo.arrlist(@primaryAry,',',@i),@v=dbo.arrlist(@valueAry,',',@i)
--添加到表变量中
insert into @tb values(@p,@v)
set @i=@i+1
end
end
--select * from@tb
return @tb
end
帮忙看看 为什么老是出 [必须声明标量变量 "@tb"。] 的错误?
如果在声明一个@tb 就会再多出一个[只能声明一个@tb...]的错误
问题已经解决,希望有能说出正确答案的!!
|