动态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);
我正在尝试将我的第一个动态 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);