新手。循环插入问题。速度
表table1
id id2
传入参数id=1.id2=1,2,3,4,5
求一个函数能把这两个参数按一下格式插入到table1中
1 1
1 2
1 3
1 4
1 5
------解决方案--------------------drop function udf_splitstring
go
create function udf_splitstring
(
@str varchar(8000) --要分拆的字符串
,@spli varchar(10) --字符串分隔符
)
returns @retab table(istr varchar(8000))
as
begin
declare @i int
declare @splen int
select @splen=len(@spli),@i=charindex(@spli,@str)
while @i > 0
begin
insert into @retab
values(left(@str,@i-1))
select @str=substring(@str,@i+@splen,8000)
select @i=charindex(@spli,@str)
end
if @str <> ' ' insert into @retab values(@str)
return
end
go
declare @id int,@id2 varchar(100)
select @id=1,@id2= '1,2,3,4,5 '
insert into table1(id,id2)
select @id,istr from udf_splitstring(@id2, ', ')
------解决方案--------------------樓主,你的需求需要用存儲過程來實現
Create ProceDure SP_TEST(@id Int, @id2 Varchar(1000))
As
Begin
Select Top 1000 ID = Identity(Int, 1, 1) Into #T From Syscolumns A, Syscolumns B
Insert table1 Select @id, Substring(@id2, B.ID, CharIndex( ', ', @id2 + ', ', B.ID) - B.ID)
From #T B
Where Substring( ', ' + @id2, B.id, 1) = ', '
Drop Table #T
End
GO
EXEC SP_TEST 1, '1,2,3,4,5 '
Select * From table1
------解决方案--------------------请不要发表可能给我们带来伤害的言论,谢谢配合
怎么回事,我的一段程序怎么也发不上去
------解决方案--------------------我剛也是,CSDN又發神經了。
------解决方案--------------------我的也是,发了N次都是这个提示,被CSDN折磨死了!
------解决方案--------------------我这儿没出现过呢~!
------解决方案--------------------最后拼出语句,再执行
拼出语句的语句也贴不上
不玩了
------解决方案--------------------这个帖子之前在楼主的另一个帖子中发了N次都不成功,最后竟然也出现了大红的
"请不要发表可能给我们带来伤害的言论,谢谢配合 "!