sql server 存储过程 数据不能完整插入

发布于 2022-09-03 00:16:23 字数 794 浏览 8 评论 0

要求用户输入两段用分号分隔的字符串,如'01;02;03'和'aa;bb;cc';传到存储过程中,存储过程将01和aa存到student表的xh和xm字段,02和bb,03和cc;但是存储过程的语句肯定有问题,就是不能存入,望解:

create Proc insert_Data
@str_xh varchar(100),
@str_xm varchar(500)
as
while(charindex(';',@str_xh)<>0 and charindex(';',@str_xm)<>0)
begin

declare @xh_id varchar(10),
        @xm_id varchar(50);
set @xh_id=substring(@str_xh,1,charindex(';',@str_xh)-1);
set @xm_id=substring(@str_xm,1,charindex(';',@str_xm)-1);

insert into student values(@xh_id,@xm_id) ;

--截取剩余的字符串重新赋给@xh_id
set @str_xh=stuff(@str_xh,1,charindex(';',@xh_id),'');
set @str_xm=stuff(@str_xm,1,charindex(';',@xm_id),'')

end

--字符串中没有';'了,则最后一个id直接为最后一个字符
insert into student values(@xh_id,@xm_id)
go

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最丧也最甜 2022-09-10 00:16:23

我觉得你这样定义参数,处理比较复杂,如果两个参数对应的值是一一对应,可以合并为一个参数
你可以采取xml格式的参数,如:
下面的@xml就是你的参数,在处理时可以直接按表处理


DECLARE @xml XML 
SET @xml='<students>
          <student><code>01</code><name>aa</name></student>
          <student><code>02</code><name>bb</name></student>
          <student><code>03</code><name>cc</name></student>
</students>'

SELECT b.value('code[1]','varchar(100)') AS code, b.value('name[1]','varchar(100)') AS [name]
FROM @xml.nodes('students/student') s(b)

code name
01 aa
02 bb
03 cc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文