我有一个带有插入语句的存储过程。当用户将所有值都设置为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”
在这种情况下,我认为条件条件可以正常工作,但是在阅读了文档和其他链接后,编写这样的语句在语法上似乎是错误的。
解决该问题的任何其他方式。
答案 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
的值检查每个变量,然后COALESCE
和NULLIF
如下所示:
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