问题如下:
表结构
id 字段1 字段2 字段3 ...字段n
有一个和此表对应的类
现在我想修改这个表中的记录,我将对应表的所有属性都传过去,但只修改属性值不为空的记录,这个存储过程该如何写?

解决方案 »

  1.   


    CREATE PROC update_table
        (
          @字段1 VARCHAR(200) ,
          @字段2 VARCHAR(200) ,
          @字段3 VARCHAR(200)
        )
    AS 
        BEGIN
            UPDATE  tablename
            SET     字段1 = @字段1 ,
                    字段2 = @字段2 ,
                    字段3 = @字段3
            WHERE   字段1 IS NOT NULL
                    AND 字段2 IS NOT NULL
                    AND 字段3 IS NOT NULL
        END
      

  2.   


    上面传参时应该要处理数据库中的null是DBNULL.Value ,而类中的一般是null
    如果上面处理好了就可以看下面存储过程了
    create procedure up_t
    @id int
    ,@v1 int=null
    ,@v2 varchar(10)=null
    ,@v3 varchar(10)=null
    as
    begin
    update tb set v1=case when @v1 is null then [v1] else @v1 end,v2=case when @v2 is null then [v2] else @v2 end,v3=case when @v3 is null then [v3] else @v3 end
    where id=@id
    end
    go
      

  3.   

    set a = case when a is null then @a else a end ,