我的字段ID是int类型,存储过程参数是一串字符串如 1,4,5,6,8
存储过程中:DELETE FROM SEND_ADMINUSER_TAB WHERE fld_id in('+@ID+') 这么写报错,因为fld_id是int类型,传入的是一个字符串1,4,5,6,8 请问如何写这个IN的,小弟存储过程是新手
存储过程中:DELETE FROM SEND_ADMINUSER_TAB WHERE fld_id in('+@ID+') 这么写报错,因为fld_id是int类型,传入的是一个字符串1,4,5,6,8 请问如何写这个IN的,小弟存储过程是新手
解决方案 »
- 如果要在 .htm文件里 通过判断session里面的值,来是否显示某个东西
- 关于state(状态)模式的一些疑问。
- 不是说C#程序离不开.net环境,那为什么一些XP用户可以用的我的软件?
- 将截断字符串或二进制数据。语句已终止! 这是声明原因呢?代码为下,请高手帮忙调试!!!
- 关于Visual Studio中的“引用”.NET类和COM组件的问题
- 使用sqldataadapter更新数据
- 写xml文件问题(急!!!!)
- 高手们,请问一下,这样打印出来的东西非常模糊,无法使用,该怎么办呢?
- 问一个奇怪的问题关于NotifyIcon的!
- ORA-01060:不允许数组赋值或执行
- 两个数据库 SqlDataAdapter.Update() 的问题
- Winform中怎样从Picbox中读取图片
DELETE FROM SEND_ADMINUSER_TAB WHERE fld_id in(1,4,5,6,8)
or
declare @ID varchar(200)
set @ID = '1,4,5,6,8'
exec('DELETE FROM SEND_ADMINUSER_TAB WHERE fld_id in('+ @ID +')')
Create Function [dbo].[StringToTable](@str varchar(1024))
Returns @tableName Table
(
ID int
)
As
--该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串'1,2,3,4,5' 将编程一个表,这个表
begin
declare
@Index int,
@TempID int;
while(@str<>'')
begin
set @Index=CharIndex(',',@str);
if(@Index=0)
select @TempID=Cast(@str as int),@str='';
else
select @TempID=cast(Left(@str,@Index-1) as int),@str=SubString(@str,@Index+1,256);
insert into @tableName values(@TempID)
end
return;
endDELETE FROM SEND_ADMINUSER_TAB WHERE fld_id in(select ID from dbo.StringToTable(@ID))