日期:2014-05-19  浏览次数:20469 次

新手。循环插入问题。速度
表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次都不成功,最后竟然也出现了大红的
"请不要发表可能给我们带来伤害的言论,谢谢配合 "!