Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 if语句调试_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

SQL if语句调试

SQL if语句调试,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我有以下两个查询,第一个查询正如您所期望的那样工作。第二个引发异常,表示删除了无效的列名。但是我添加了if-else结构来避免这个错误,我在第二个查询中做错了什么 IF COL_LENGTH('vwAs', 'IsActive') IS NOT NULL select 1 ELSE IF COL_LENGTH('vwABCs', 'IsDeleted') IS NOT NULL select 0 ELSE SELECT -1 及 在运行查询数据库引擎之前,请尝试验证代码,但

我有以下两个查询,第一个查询正如您所期望的那样工作。第二个引发异常,表示删除了无效的列名。但是我添加了if-else结构来避免这个错误,我在第二个查询中做错了什么

IF COL_LENGTH('vwAs', 'IsActive') IS NOT NULL  
select  1  
ELSE IF COL_LENGTH('vwABCs', 'IsDeleted') IS NOT NULL
  select 0   
ELSE SELECT -1


在运行查询数据库引擎之前,请尝试验证代码,但不要验证逻辑。如果您的表未删除
ISDELETED
列,DB将显示一个错误。因此,您必须向DB引擎隐藏错误的代码作为动态sql。将不验证动态sql

IF COL_LENGTH('vwAs', 'IsActive') IS NOT NULL  
select   Count(*) [vwB] from [vwAs] WHERE ISACTIVE = 1 
ELSE IF COL_LENGTH('vwABCs', 'IsDeleted') IS NOT NULL
  exec('select Count(*) [vwABCsActive] from [vwABCs] WHERE ISDELETED = 0')
ELSE SELECT -1

在运行查询数据库引擎之前,请尝试验证代码,但不要验证逻辑。如果您的表未删除
ISDELETED
列,DB将显示一个错误。因此,您必须向DB引擎隐藏错误的代码作为动态sql。将不验证动态sql

IF COL_LENGTH('vwAs', 'IsActive') IS NOT NULL  
select   Count(*) [vwB] from [vwAs] WHERE ISACTIVE = 1 
ELSE IF COL_LENGTH('vwABCs', 'IsDeleted') IS NOT NULL
  exec('select Count(*) [vwABCsActive] from [vwABCs] WHERE ISDELETED = 0')
ELSE SELECT -1