在复选框多选的时候,我们找到多行数据,需要在数据库中查询.这个多行数据查询的时候,例如id.
此时变为了一个长的一个字符串,他的sql存储过程如下
create proc proc_deleteCheck
@deletes varchar(max)
as
declare @set varchar(max);
set @set='delete from Student where StuNum in ('+@deletes+')'
exec(@set)
但是为先写的不是这个,是以下这个语句
create proc proc_deleteCheck
@deletes varchar(max)
as
delete from Student where StuNum in (@deletes)
但问题是这个语句并不能查询到我想要的结果.就是说,这个查询条件在语句中找不到.
原因我也想到了.是因为@deletes的语句是一个字符串,但是sql中的in里面是个集合,而不是字符串
d
-------------------------------- 作者在 2020-01-17 14:02:33 补充以下内容 --------------------------------
这个是因为在SQL查询中直接赋予变量是不到单引号的,而IN必须为字符串集合
可以将此句查询SQL改为字符串,使用EXEC执行此句查询字符串
ALTER proc proc_deleteCheck_aaaaaaa
@deletes varchar(max)
AS
DECLARE @sql VARCHAR(max)
begin
SET @sql='SELECT * from dbo.Traffic_Sites where SiteKey in ('+@deletes+')'
EXEC(@sql)
END
---调用
proc_deleteCheck_aaaaaaa '''P00001'',''p00002'''
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。