使用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过程。
答案 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
中有tablename1
和param1='2222'
的记录时,此查询会更新param2<5
。
我使用SQLFiddle(http://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