CREATE   PROCEDURE index_Message
@SMStype int,    --==消息类型
@SMSto varchar(50),--==消息的归属者
@top bit=false
asif @top=falseSELECT Title, SendDate, Content,
          (SELECT COUNT(*)
         FROM writeBack
         WHERE parentID = Message.nID) AS writeBack
FROM Message
WHERE (SMSTo = @SMSto) AND (SMStype = @SMStype)else
SELECT top 5 Title, SendDate, Content,
          (SELECT COUNT(*)
         FROM writeBack
         WHERE parentID = Message.nID) AS writeBack
FROM Message
WHERE (SMSTo = @SMSto) AND (SMStype = @SMStype)go我这样做有报错,那么请问SQL 存储过程里面如何使用IF呢?

解决方案 »

  1.   

    CREATE   PROCEDURE index_Message
    @SMStype int,    --==消息类型
    @SMSto varchar(50),--==消息的归属者
    @top bit=0 --sql里没有布尔型数据类型,bit用0/1表示
    asif @top=0 --改为0/1SELECT Title, SendDate, Content,
              (SELECT COUNT(*)
             FROM writeBack
             WHERE parentID = Message.nID) AS writeBack
    FROM Message
    WHERE (SMSTo = @SMSto) AND (SMStype = @SMStype)else
    SELECT top 5 Title, SendDate, Content,
              (SELECT COUNT(*)
             FROM writeBack
             WHERE parentID = Message.nID) AS writeBack
    FROM Message
    WHERE (SMSTo = @SMSto) AND (SMStype = @SMStype)go
      

  2.   

    if 条件
    begin
    end
    else
    begin
    end
      

  3.   

    if(@top=false)
    begin
    .............
    .............
    end
    else
    begin
    ............
    ............
    end
      

  4.   

    if @top=false
    SQL中没有false这个值
    可以用0或1来代替
      

  5.   

    如果if或else里面只有一条语句的话,就写成
    if
    else
    如果是多条语句的话就写成
    if
      begin
      end
    else
      begin
      end