create PROCEDURE [dbo].[sp_ProductSetProduct]
------------------------------------------------------------------------
--目的:设置产品。
------------------------------------------------------------------------
@Id int,
--@Action的值是commend或new或hot
@Action nvarchar(50),
@SetValue int
AS
--本来只能固定更新IsCommend这个字段
UPDATE Product
SET IsCommend = @SetValue
WHERE Id = @Id
--现在加入了@Action参数,想有选择的更新一个字段
UPDATE Product
--这样好象不行
IF @Action = 'commend' 
BEGIN
SET IsCommend = @SetValue
END
WHERE Id = @Id

解决方案 »

  1.   

    exec('update 表明 set '+@字符串列名+'='+@字符串值+' where 列名='+@条件值+'')
      

  2.   

    exec('') 里面拼接字符串SQL执行就行
      

  3.   

    create PROCEDURE [dbo].[sp_ProductSetProduct]
    ------------------------------------------------------------------------
    --目的:设置产品。
    ------------------------------------------------------------------------
    @Id int,
    --@Action的值是commend或new或hot
    @Action nvarchar(50),
    @SetValue int
    AS
    BEGIN
    SET NOCOUNT ON  IF @Action = 'commend' 
    BEGIN
    UPDATE Product SET 字段=值 WHERE ID=@ID
    END
    IF @Action = 'new' 
    BEGIN
    UPDATE Product SET 字段=值 WHERE ID=@ID
    END
    ELSE
    BEGIN
    UPDATE Product SET 字段=值 WHERE ID=@ID
    END
    END