新微赢技术网
标题:
关于存储过程中in的使用方法
[打印本页]
作者:
林风
时间:
2010-1-10 07:13
标题:
关于存储过程中in的使用方法
在编写程序时,我们会经常使用到批量操作的过程。一但数据批量操作,数据处理时我们就会用到 in 来进行判断。
in操作在sql操作如:
Dim IDStr
IDStr="45,58,79,89,100"
Conn.exeCute("Update N_News set IsCheck=1 where ID in("&IDSt&")")
这样执行是没有问题的。
而对存储过程:
Conn.exeCute("UpdateCheck_News '"&IDStr&"'")
CREATE procedure UpdateCheck_News
(
@IDStr varchar(100)
)
as
Begin
Update N_News set IsCheck=1 where ID in(@IDStr)
End
Go
而对于存储过程这样执行,是根本不行。原因在于@IDStr 参数传入后,存储过程把@IDStr 当作一个整体变量和ID进行匹配,自然而然当然是执行有误。
解决此问题的方法如下:
把传存储过程参数变为:IDStr="'45','58','79','89','100'" 这样可以
但是这样我们就要面对一次参数的重新组合。
但如果我们改良一下存储过程,就不用上面那步。对于存储过程我们改为动态sql语句就可以。
改为如下存储过程就可:
CREATE procedure UpdateCheck_News
(
@IDStr varchar(100)
)
as
Begin
declare @SqlStr varchar(1000)
Set @SqlStr="Update N_News set IsCheck=1 where ID in("+@IDStr +")"
exeCute(@SqlStr)
End
Go
作者:
未来的回忆
时间:
2010-1-10 07:13
困了,该睡了……
作者:
痴情浪子
时间:
2010-2-7 14:05
好得不能再好的好帖!
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2