在MS SQL存储过程中实现if else语句

时间:2013-09-05 14:55:19

标签: sql-server tsql

使用Sql Server 2008 r2:

begin

    insert tablename1(param1, param2)values(@param1,@param2)

    if(@param1=="2222"  && @param2<5)

    set @param2 = @param2 + 1

    update tablename2 set param2=@param2 where param1=@param1

end

end

如何实现这样的sql过程。

3 个答案:

答案 0 :(得分:2)

T-SQL有一个if-else statement。对于条件语句,请使用与WHERE子句相同的语法,例如AND代替&&=代替==和单引号对于字符串。 IF期待单一陈述;如果要执行代码块,请将其包装在BEGIN ... END

在您的情况下,代码可能如下所示:

IF @param1 = '2222' AND @param2 < 5
BEGIN
    ...
END

PS:搜索SQL Server语法元素时,请在关键字中添加t-sql。例如,Google搜索t-sql if会将SQL Server IF-ELSE-Syntax的描述作为第一个命中。

答案 1 :(得分:1)

我相信您提出的问题是,如何根据tablename2中的值更新tablename1

UPDATE t2
SET t2.param2= t1.param2 + 1
FROM tablename1 t1
JOIN tablename2 t2 ON t1.param1 = t2.param1
WHERE (t1.param1 = '2222' AND t1.param2 < 5)

tablename2中有tablename1param1='2222'的记录时,此查询会更新param2<5

我使用SQLFiddlehttp://sqlfiddle.com/#!3/a29866/2)设置了一些测试数据和前后查询。

答案 2 :(得分:0)

假设@param1是一个字符串而@param2是一个数字,请尝试以下方法:

CREATE PROCEDURE [dbo].[procedure_name]
@param1     varchar(50),
@param2     int
AS

begin
    insert into tablename1(param1, param2) values(@param1,@param2)

    if @param1='2222' and @param2 < 5
    begin
        set @param2 = @param2 + 1
        update tablename2 set param2=@param2 where param1=@param1
    end
end