Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查SQL Server 2012中的IF-ELSE控制语句中的SQL查询是否已成功执行?_Sql_Sql Server_Database - Fatal编程技术网

如何检查SQL Server 2012中的IF-ELSE控制语句中的SQL查询是否已成功执行?

如何检查SQL Server 2012中的IF-ELSE控制语句中的SQL查询是否已成功执行?,sql,sql-server,database,Sql,Sql Server,Database,我将部门名称存储在变量@department中,我现在将从一行中获取该特定部门名称。我想知道departments表中是否存在部门id意味着用户输入的部门名称是否有效。如何做到这一点?如何将此查询转换为布尔表达式 create table dbo.departments ( department_id int primary key; department_name varchar(255); ) if(select @finaldepartment_id = departme

我将部门名称存储在变量
@department
中,我现在将从一行中获取该特定部门名称。我想知道
departments
表中是否存在部门id意味着用户输入的部门名称是否有效。如何做到这一点?如何将此查询转换为布尔表达式

create table dbo.departments
(
    department_id int primary key;
    department_name varchar(255);
)

if(select @finaldepartment_id = department_id 
   from dbo.departments 
   where department_name like @department)
   set @department_flag = 1;
else
   set @department_flag = 0;

要检查是否有任何部门符合您的条件,请使用
EXISTS

IF EXISTS (
  select 1 
  from dbo.departments 
  where department_name like '%'+@department+'%'
  )

如果需要将部门id分配到变量中,请使用结果设置变量,然后检查该变量是否为空。

若要检查是否有任何部门符合您的条件,请使用
存在

IF EXISTS (
  select 1 
  from dbo.departments 
  where department_name like '%'+@department+'%'
  )

如果需要将部门id分配到变量中,请使用结果设置变量,然后检查该变量是否为空。

可以简化为单个查询

SET @department_flag = CASE 
                         WHEN EXISTS (SELECT 1 
                                      FROM   dbo.departments 
                                      WHERE  department_name LIKE Concat('%',@department,'%')) THEN 1
                         ELSE 0 
                       END 

它可以简化为单个查询

SET @department_flag = CASE 
                         WHEN EXISTS (SELECT 1 
                                      FROM   dbo.departments 
                                      WHERE  department_name LIKE Concat('%',@department,'%')) THEN 1
                         ELSE 0 
                       END 

这实际上取决于你想如何使用结果。如果在另一个查询中使用,我将使用不同的方法。如果在程序(SP或c#j)中使用它,我可能会使用存储过程或函数。这实际上取决于您希望如何使用结果。如果在另一个查询中使用,我将使用不同的方法。如果在程序中使用它(SP或c#j我可能会使用存储过程或函数。使用case似乎是最佳方法,但它会抛出输出:关键字“THEN”附近的语法不正确。@SiddharthBhardwaj-是的,有一个拼写错误修复了它。使用case似乎是最佳方法,但它会抛出输出:关键字“THEN”附近的语法不正确。@SiddharthBhardwaj-是的,有一个打字错误修正了它。