2017-07-26 33 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

感謝您的反饋。樂意效勞。 :) –