-3

使用 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过程。

4

3 回答 3

2

T-SQL 有一条if-else语句。对于条件语句,请使用与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 的描述作为第一个命中。

于 2013-09-05T15:00:35.483 回答
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)

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

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

于 2013-09-05T15:32:30.757 回答
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
于 2013-09-05T15:06:03.393 回答