日期:2014-05-18  浏览次数:20508 次

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


CREATE PROCEDURE pro1

as

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
GO


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 pro1
as
begin --你少了这里
  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