通过带有可变参数的存储过程更新表 [英] Updating a Table through a stored procedure with variable parameters

查看:24
本文介绍了通过带有可变参数的存储过程更新表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了便于使用,我有存储过程,其中包含用于 SELECT 语句的可选参数,如下所示:

For ease of use I have Stored procedures which have optional parameters for SELECT statments like the below:

CREATE PROCEDURE stpProcedure
    @Variable1 INT = NULL,
    @Variable2 INT = NULL,
    @Variable3 INT = NULL,
    @NumberToReturn INT = 1000
AS
BEGIN
    SELECT TOP (@NumberToReturn)    Column1,
                                    Column2,
                                    Column3,
                                    Column4
    From                            Table1
    WHERE                           (@Variable1 IS NULL OR Column1 = @Variable1)
    AND                             (@Variable2 IS NULL OR Column2 = @Variable2)
    AND                             (@Variable3 IS NULL OR Column3 = @Variable3)
END
GO

有没有办法将这种技术用于更新语句?即我想根据特定表的存储过程输入更新一个或多个列.我正在尝试做的一个例子如下:

Is there a way to use this technique for update statements? Ie I want to update one or more columns based on the stored procedure input for a particular table. An example of what I am trying to do is below:

CREATE PROCEDURE stpUpdate
    @Variable1 INT = NULL,
    @Variable2 INT = NULL,
    @Variable3 INT = NULL,
    @Variable4 INT,
    @NumberToReturn INT = 1000
AS
BEGIN
    Update      Table1
    SET         Column1 = @Variable1,
                Column2 = @Variable2,
                Column3 = @Variable3
    From        Table1
    Where       Column4 = @Variable4
END
GO

推荐答案

您可以使用 COALESCE() 函数来构建这种更新语句

You can use COALESCE() function to build this kind of update statement

CREATE PROCEDURE stpUpdate
    @Variable1 INT = NULL,
    @Variable2 INT = NULL,
    @Variable3 INT = NULL,
    @Variable4 INT,
    @NumberToReturn INT = 1000
AS
BEGIN
    Update      Table1
    SET         Column1 = COALESCE(@Variable1,Column1),
                Column2 = COALESCE(@Variable2,Column2),
                Column3 = COALESCE(@Variable3,Column3)

    Where       Column4 = COALESCE(@Variable4,Column4)
END
GO

这篇关于通过带有可变参数的存储过程更新表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆