2017-07-26 39 views
1

我正在尝试将我的第一个动态SQL语句作为更大的存储过程的一部分。我无法获得以下工作。我不断收到一个错误:! “无效的列名称FD__CLIENT_ADDRESS“动态SQL:建议/建议(正确使用Object_ID函数)

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) 

我愿意接受建议,链接,教程,或任何其他谢谢您的时间,并帮助

回答

1

OBJECT_ID函数需要一个完全限定表名......( '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); 
+0

完美,日在做诡计!谢谢。 –

+0

感谢您的反馈。乐意效劳。 :) –