动态SQL:Advice/Suggestions(正确使用Object_ID函数)

Dynamic SQL: Advice/Suggestions (Proper use of the Object_ID function)

我正在尝试将我的第一个动态 SQL 语句作为更大存储过程的一部分。我无法使以下内容正常工作。我不断收到错误消息: “无效的列名称 'FD__CLIENT_ADDRESS'

DECLARE @SQL        VARCHAR(500)
DECLARE @TABLENAME  VARCHAR(100)

SET @TABLENAME = N'FD__CLIENT_ADDRESS'

SET @SQL = 
'IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N''AdmissionKey'' AND Object_ID = Object_ID('+ @TABLENAME + '))
    BEGIN
        print ''success''
    END'
EXEC(@SQL)

我乐于接受建议、链接、教程或其他任何内容。感谢您的宝贵时间和帮助!

OBJECT_ID 函数需要一个完全限定的 table 名称...('DatabaseName.SchemaName.TableName')...并且您需要单引号...

见下文...

DECLARE @SQL        VARCHAR(500);
DECLARE @TABLENAME  VARCHAR(100);

SET @TABLENAME = N'DataBaseName.SchemaName.FD__CLIENT_ADDRESS';

SET @SQL = 
'IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N''AdmissionKey'' AND Object_ID = Object_ID('''+ @TABLENAME + '''))
    BEGIN
        print ''success''
    END';
EXEC(@SQL);