Sql 存储过程更新(如果存在且大于现有值)
如果name=@name存在,我想更新表TblNames。更新与现有行数据相比较的列 表TBL名称 参数@name、@val1、@val2、@val3 如果名称存在,请选择行和 将val1与@val1参数进行比较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
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,这是一个干净简单的帮助:-