满足条件时执行插入语句

时间:2018-07-30 11:07:32

标签: sql sql-server-2008

我有一个带有插入语句的存储过程。当用户将所有值都设置为0时,该过程将执行一条插入语句。如果用户提供的值不同,则应返回一条错误语句。

case when @test1=0,@test2=0,@test3=0 then 
{Insert statement} 
Else
Case when @test1=0,@test2=0,@test3=1
{select “All cases should be 0”}
Else
Select “Please provide data”

在这种情况下,我认为条件条件可以正常工作,但是在阅读了文档和其他链接后,编写这样的语句在语法上似乎是错误的。

解决该问题的任何其他方式。

2 个答案:

答案 0 :(得分:1)

对于T-SQL中的控制流,请使用if,而不要使用case。像这样:

if @test1=0 and @test2=0 and @test3=0 
begin 
    {Insert statement} 
end;
Else if @test1=0 and @test2=0 and @test3=1
begin
    {select “All cases should be 0”}
end
Else
begin
    Select “Please provide date”
end;

答案 1 :(得分:0)

您可以使用IF并用0的值检查每个变量,然后COALESCENULLIF如下所示:

IF (@test1 = 0 AND @test2 = 0 AND @test3 = 0) 
BEGIN 
    INSERT INTO tmpTable(val1)
    SELECT val1 FROM <table_name>
END
ELSE IF COALESCE(NULLIF(@test1, 0), NULLIF(@test2, 0), NULLIF(@test3, 0)) IS NOT NULL
BEGIN
    SELECT 'All cases should be 0'
END
ELSE
BEGIN
    SELECT 'Please provide data'
END