日期:2014-05-17  浏览次数:20638 次

存储过程 如何动态选择更新列
SQL code

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






------解决方案--------------------
exec('update 表明 set '+@字符串列名+'='+@字符串值+' where 列名='+@条件值+'')
------解决方案--------------------
SQL code
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