如果@JjCode没有值   那就只执行SQL1语句

解决方案 »

  1.   


    --建立测试表
    create table test
    (
      name varchar(255),
      colum1 int constraint defaultcolum1 default 1,
      colum2 varchar(255) constraint defaultcolum2 default 'aa',
    )
    go--创建储存过程
    --如果@JjCode为NULL或未找到,将@ClCode数值插入到表中
    --如果@JjCode找到并且@YnOver为'完成',更新表中@ClCode的colum1的值
    --如果@JjCode找到并且@YnOver为'未完成',更新表中@ClCode的colum2的值
    create proc p1
    @ClCode varchar(50),
    @JjCode varchar(50) = NULL,
    @YnOver varchar(50)
    as
    begin
     if not exists (select name from test where name =@JjCode) or (@JjCode = NULL)
     begin
        insert into test values (@ClCode,default,default)
     end 
     if exists (select name from test where name = @JjCode) and (@YnOver = '完成')
     begin
        update test set colum1 = 2 where name = @JjCode
     end 
     if exists (select name from test where name = @JjCode) and (@YnOver = '未完成')
     begin
        update test set colum2 = 'bb' where name = @JjCode
     end
    end
    go--测试数据
    exec p1 'ww',NULL,'完成'
    exec p1 'ww','ww','完成'
    exec p1 'ww','ww','未完成'
      

  2.   

    create proc p1
    ( @ClCode varchar(50),
    @JjCode varchar(50),
    @YnOver varchar(50)
    )
    as
    set nocount on
    begin   --SQL1语句(写入表1)

    if(@JjCode<>'' and @YnOver='完成')
    begin
       --SQL2语句(更新表2的一个字段)

    end
    if(@JjCode<>'' and @YnOver='未完成')
    begin    --SQL3语句(更新表2的一个字段)

    endend
    go
      

  3.   

    create proc p1
    @ClCode varchar(50),
    @JjCode varchar(50),
    @YnOvervarchar(50)
    as
    begin  set xact_abort on
      begin tran
         
          --执行SQL语句1  
          if @JjCode is not null and @YnOver='完成'
          begin
                --执行SQL语句2
          end
          if @JjCode is not null and @YnOver='未完成'
          begin
                --执行SQL语句3
          end  commit tran
    end
      

  4.   

    我想用if(exists(select * from TableName where ColumnName=@vColumnName))之類的語句
    可以實現樓主的功能