Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存储过程更新(如果存在且大于现有值)_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 存储过程更新(如果存在且大于现有值)

Sql 存储过程更新(如果存在且大于现有值),sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,如果name=@name存在,我想更新表TblNames。更新与现有行数据相比较的列 表TBL名称 参数@name、@val1、@val2、@val3 如果名称存在,请选择行和 将val1与@val1参数进行比较 if val1 < @val1 then @val1 = val1 else val1 = @val1 if val2 > @val2 then @val2 = val2 else val2 = @val2 ( val3 + @val3 ) / 2 val3和@v

如果name=@name存在,我想更新表TblNames。更新与现有行数据相比较的列

表TBL名称

参数@name、@val1、@val2、@val3

如果名称存在,请选择行和

将val1与@val1参数进行比较

if val1 < @val1 
then @val1 = val1
else val1 = @val1
if val2 > @val2 
then @val2 = val2
else val2 = @val2
( val3 + @val3 ) / 2
val3和@val3参数的平均值

if val1 < @val1 
then @val1 = val1
else val1 = @val1
if val2 > @val2 
then @val2 = val2
else val2 = @val2
( val3 + @val3 ) / 2
最后

Update TblNames set val1 = @val1, val2 = @val2, val3 = @val3 Where name = @name
使用:

使用:

可以对val1和val2使用大小写表达式,对val3只使用算术表达式

可以对val1和val2使用大小写表达式,对val3只使用算术表达式


请尝试下面的查询,为您的问题创建程序

CREATE PROC dbo.Name_Calculation_value (
    DECLARE @name VARCHAR(20) = NULL
    ,@val1 INT = NULL
    ,@val2 INT = NULL
    ,@val3 INT = NULL
    )

BEGIN
    AS

    IF EXIST(SELECT COUNT(*) FROM dbo.TblNames) > 0
    BEGIN
        UPDATE dbo.TblNames
        SET val1 = CASE 
                WHEN val1 < @val1
                    THEN @val1
                ELSE val1
                END
            ,val2 = CASE 
                WHEN val2 <= @val2
                    THEN @val2
                ELSE val2
                END
            ,val3 = (val3 + @val3) / 2
        WHERE name = @name;
    END

请尝试下面的查询,为您的问题创建程序

CREATE PROC dbo.Name_Calculation_value (
    DECLARE @name VARCHAR(20) = NULL
    ,@val1 INT = NULL
    ,@val2 INT = NULL
    ,@val3 INT = NULL
    )

BEGIN
    AS

    IF EXIST(SELECT COUNT(*) FROM dbo.TblNames) > 0
    BEGIN
        UPDATE dbo.TblNames
        SET val1 = CASE 
                WHEN val1 < @val1
                    THEN @val1
                ELSE val1
                END
            ,val2 = CASE 
                WHEN val2 <= @val2
                    THEN @val2
                ELSE val2
                END
            ,val3 = (val3 + @val3) / 2
        WHERE name = @name;
    END

@您可以使用output子句。编辑了我的答案,将其包括在内。谢谢@Zohar,它是干净和简单的帮助:-@shadow,您可以使用output子句。编辑了我的答案,将其包括在内。感谢@Zohar,这是一个干净简单的帮助:-