我声明了一个变量@Obj,并为其分配了完整的表名'ODS..Account'。
DECLARE @Obj VARCHAR(255)
然后,我在FROM子句后立即在查询中使用了它。我认为这只是一个字符串,无法充当表对象。那么,如何修复代码才能使其正常工作呢?干杯
INSERT Control.dbo.Consistency_Check
(Table_Name
,Schema_Name
,Id
,Incremental_DateTime_Column
)
SELECT
@Tab
,'ODS'
,Id
,SystemModstamp
FROM
@Obj )
你不能。您可能要使用动态查询。即,将SQL查询字符串转换为变量,然后使用sp_executesql执行。
您可以在动态SQL中使用相同的变量名,但是在示例中,我将其更改为@p_Tab。
DECLARE @Tab int = 3
DECLARE @SQLString nvarchar(500)
DECLARE @ParmDefinition nvarchar(500) = N'@p_Tab int';
Declare @TableName nvarchar(100) = 'ODS..Account'
/* Build the SQL string dynamicly.*/
SET @SQLString = N'INSERT Control.dbo.Consistency_Check
(Table_Name
,Schema_Name
,Id
,Incremental_DateTime_Column
)
SELECT
@p_Tab
,''ODS''
,Id
,SystemModstamp
FROM
'+ @TableName
EXECUTE sp_executesql @SQLString, @ParmDefinition,
@p_Tab = @Tab
进一步的参考:https : //msdn.microsoft.com/en-us/library/ms188001.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句