我需要执行以下逻辑子句:
如果列存在并且具有一定的值(value),则执行某些操作。 如果没有,那就做点别的事。
IF EXISTS(
SELECT *
FROM sys.columns
WHERE Name = N'legacyoptions'
AND Object_ID = Object_ID(N'config '))
BEGIN
if ( select legacyoptions from config)=1
begin
Do stuff when legacy=1
end
else begin
Do stuff when legacy !=1
END
else
begin
do stuff when legacy is not present
end
但是,如果legacyoptions
不存在,这不起作用
最佳答案
这里是使用 TRY CATCH block 和动态 SQL 的方法,因此该代码块将在数据库中没有表 config
和/或 legacyoptions
字段的情况下进行编译。
BEGIN TRY
DECLARE @legacyoptions int;
EXECUTE sp_executesql N'select TOP 1 @legacyoptions=legacyoptions from config',
N'@legacyoptions int OUTPUT',
@legacyoptions OUTPUT;
if @legacyoptions=1
begin
-- Do stuff when legacy=1
end
ELSE
BEGIN
-- Do stuff when legacy !=1
END
END TRY
BEGIN CATCH
-- do stuff when legacy is not present
END CATCH
关于sql-server - T SQL 如果列存在则(如果它有值 X 那么(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265473/