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