读书人

存储过程-复合if else?解决方案

发布时间: 2012-03-25 20:55:17 作者: rapoo

存储过程-复合if else?
存储过程中有个复合if else的问题:

C# code
CREATE PROCEDURE pro1asif (1=2)beginselect 0endelse if (1=1)begin     //在这里有个复合的if else,在满足(1=1)的条件下:      /*      if(条件一)       select 10       else if(条件二)       select 100       else       select 1000     */endelsebeginselect 2endGO


1、请问有这些begin、end和没有这些begin、end,运行有什么区别吗?
2、请补充复合中的代码,因为我这样写有错误:
/*
if(条件一)
select 10
else if(条件二)
select 100
else
select 1000
*/

[解决办法]
SQL code
1、请问有这些begin、end和没有这些begin、end,运行有什么区别吗? 一个模块有多句SQL语句需要begin end ,如果一个只有一句,不需要.2、请补充复合中的代码,因为我这样写有错误:       /* begin      if(条件一)       select 10       else if(条件二)       select 100       else       select 1000 end    */
[解决办法]
if else 后面只能跟一句SQL,多了就要用begin ... end 。如果if 后面有两句SQL,第2句就不受if else 控制了,一定会被执行的。


[解决办法]
SQL code
--不太明白你代码的具体意思.CREATE PROCEDURE pro1asbegin --你少了这里  if (1=2) --这里这么写永远也不会执行下面的代码     begin --可以不要       select 0     end   --可以不要  else if (1=1) --这里这么写,永远都满足。    begin     //在这里有个复合的if else,在满足(1=1)的条件下:      /*      if(条件一)       select 10       else if(条件二)       select 100       else       select 1000     */   end  else    begin --可以不要      select 2    end   --可以不要end  --你少了这里GO 

读书人网 >SQL Server

热点推荐