Office中国论坛/Access中国论坛

标题: [求助]sql中case能不能象mdb中的select那样写 [打印本页]

作者: tz-chf    时间: 2005-11-6 17:52
标题: [求助]sql中case能不能象mdb中的select那样写
我看到sql的例子case的用法都是在一条sql语句中的,能不能象VB里的select case那样用法。如果不能,那用什么代替?

如下,不能通过,什么原因:

  case @KindID

   when 1 then update tblNumber set Shou1=0 where Number=@Number

   when 2 then update tblNumber set Shou2=0 where Number=@Number

   when 3 then update tblNumber set Shou3=0 where Number=@Number

   when 4 then update tblNumber set Shou4=0 where Number=@Number

   when 5 then update tblNumber set Shou5=0 where Number=@Number

   when 6 then update tblNumber set Shou6=0 where Number=@Number

   when 7 then update tblNumber set Shou7=0 where Number=@Number

   when 8 then update tblNumber set Shou8=0 where Number=@Number

   when 9 then update tblNumber set Shou9=0 where Number=@Number

  end
作者: zyp    时间: 2005-11-6 18:26
if (@KindID=1) begin

     update tblNumber set Shou1=0 where Number=@Number

end .......if (@KindID=9) begin

     update tblNumber set Shou9=0 where Number=@Number

end
作者: tz-chf    时间: 2005-11-6 18:31
我原来就是这样写的,那不是每个判断都得来一遍吗?我在end之前还有一个return,可又有问题了,有了return,这组判断之后的语句又无法执行了。
作者: zyp    时间: 2005-11-6 18:40
以下是引用tz-chf在2005-11-6 10:31:00的发言:



我原来就是这样写的,那不是每个判断都得来一遍吗?

我在end之前还有一个return,可又有问题了,有了return,这组判断之后的语句又无法执行了。



return是用在最后就行了,干嘛要在每一个End之前用它呢。你所有的条件都来自一个变量,在这个n组判断中,只会有一组是true

如果你要用case来判断,只能用如下结构:

declare @SqlStr nvarchar(200)

case @KindID

when 1 then set @SqlStr ='update tblNumber set Shou1=0 where [url=mailto:Number=@Number']Number=@Number'[/url]

.....

when 9 then set @SqlStr ='update tblNumber set Shou9=0 where [url=mailto:Number=@Number']Number=@Number'[/url]



end

exec sp_Executesql @sqlstr
作者: tz-chf    时间: 2005-11-6 19:31
上面的回答跟我在CSDN社区里的一样,解决问题了。谢谢!本来我的不爽是:每个判断都得来一遍
作者: tz-chf    时间: 2005-11-8 17:19
@Number写在里面不行,得这样when 1 then set @SqlStr ='update tblNumber set Shou1=0 where [url=mailto:Number='+@Number]Number='+@Number[/url]


作者: tz-chf    时间: 2005-11-19 17:23
4楼:then里好象不能写set....,只能是写在外面




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3