asp.net数据库开发

我想要做如下操作:

使用sql语句:delete from 表a where id in(1,2,3)

注:in后面的参数我用字符串连接,在程序中通过组合字符串方式删除没有问题,但是现在我要用存储过程,传入参数,参数用varchar类型,就会提示数据类型转换出错,各位谁知道这个问题怎么解决,谢谢。

慕后森
浏览 638回答 6
6回答

紫衣仙女

两种方法可以解决 1、采用整体传参数的方法,将1,2,3作为一个整体传入存储过程,不过存储过程内部其实也是拼sql的方式,然后用exec(@sql)来执行 2、当作三个参数来传递,@p1,@p2,@p3,存储过程内部为delete from 表a where id in(@p1,@p2,@p3)

慕村9548890

那需要动态拼接字符串的,我给个实例吧! declare @strsql varchar(max),@strwherevarchar(200) set @strwhere = '''1'',''2'',''3''';//注意里面的引号 set @strsql = 'delete from 表a where id in (' + @strwhere + ')'

慕的地6264312

针对使用  三个参数来传递,@p1,@p2,@p3,存储过程内部为delete from 表a where id in(@p1,@p2,@p3)这样子的答案进行补充回复。在数据库中一般使用   delete from 表a where id in(1,2,3)是可以达到的,同等的语句可以有delete from 表a where id in('1','2','3')或者delete from 表a where id in('1,2,3').所以针对你的问题,你可以把你要传入的参数写成'1,2,3,4,5,6'这样子一个字符串传入你的存储过程,然后实现你的需求,虽然使用@p1,@p2,@p3这样子的参数能实现,但是针对不定长的参数时这样子是解决不了问题的,所以你可以使用'1,2,3,4,5,6'这样子的方式来解决...

慕娘9325324

1)如果你传入的参数是:'1','2','3','4',并且id列是int型,那么 set @strSql = 'DELETE FROM 表A WHERE CONVERT(varchar2,id) IN (' + @paramWhere + ')' exec(@strSql) 2)如果你传入的参数是:1,2,3,4,并且id列是int型,那么那么 set @strsql = 'DELETE FROM 表A WHERE id IN (' + @paramWhere + ')' exec(@strSql) 应该是没问题的.

一只斗牛犬

都老有才了!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server