首页 新闻 赞助 找找看

关于sql存储过程的小问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-26 15:16
If exists (Select * From dbo.sysobjects Where id = object_id(N'[dbo].[sp_UpdateIsUser]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
Drop Procedure [dbo].[sp_UpdateIsUser]
Go
create Proc sp_UpdateIsUser
@ProgramId int,
@Uids varchar(200),
@DeleteUids varchar(200)
as
declare @PID varchar(20)
set @PID=Cast(@ProgramId as varchar);
Begin
Exec('
Update DDASCommandByTC set IsUser=0 where ProgramID =('+@PID+')and Uid not in ('+@Uids+')'
)
Exec(
'Update DDASCommandByTC set IsUser=1 where ProgramID=('+@PID+') and Uid in ('+@Uids+')'
)
if @DeleteUids <> null
Exec(
'Delete from DDASCommandByTC where ProgramID=('+@PID+') and Uid in ('+@DeleteUids+')'
)
End
Go
@DeleteUids 这个参数我在前台传入的时候有两种情况一种是为空,我传入null,另一种是有值,求指教这样写对不对
阿磊ing的主页 阿磊ing | 初学一级 | 园豆:2
提问于:2012-09-26 13:34
< >
分享
最佳答案
0

你是执行出错还是什么,把

if @DeleteUids <> null这个改为
IF @DeleteUids IS NOT NULL 来判断
收获园豆:5
念念啊 | 菜鸟二级 |园豆:415 | 2012-09-26 13:40

执行的时候没错,就是最后那条删除的语句没效果

阿磊ing | 园豆:2 (初学一级) | 2012-09-26 13:47

@阿耒: 那你改成IS NOT NULL 试下呢

念念啊 | 园豆:415 (菜鸟二级) | 2012-09-26 14:02
其他回答(2)
0

这样应该可以  如果不行的话 可以把条件改写成 if(@DeleteUids!=' ') 而不用null

狼之崛起 | 园豆:211 (菜鸟二级) | 2012-09-26 13:40

个人觉得这种可行,没有参数传入就传入空字符串

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-09-26 13:48
0

用IsNUll函数

yuqihuahui | 园豆:202 (菜鸟二级) | 2012-09-28 14:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册