如何比较变量名称的数据库字段?
我需要从数据库'DWH_Staging'返回一个字段'CreditAdvisor_PrimaryCode',其中来自数据库'DWH_Staging'的字段'CooperationEndDate'不包含来自具有变量名称的数据库的字段'DatumUkonceni'。我们有一个过程'adm.MaxBatch'用变量名返回数据库的实际名称。 我试过了:如何比较变量名称的数据库字段?
DECLARE @db_is nvarchar(50)
SELECT @db_is = mb.DatabaseName
FROM adm.MaxBatch mb
WHERE mb.SourceID = 1
PRINT @db_is
SELECT
ca.CreditAdvisorCode_Primary
FROM
@db_is.CS_Prodejci prod
JOIN DWH_Staging.dim.CreditAdvisor ca
ON prod.KodOZ = ca.CreditAdvisorId
WHERE
prod.KonecCinnosti <> ca.CooperationEndDateId
任何帮助,将不胜感激。
,而选择从变量数据库中你需要做动态的,例如:
DECLARE @db_is nvarchar(50),@string NVARCHAR(MAX)
SET @string=' Select ca.CreditAdvisorCode_Primary
from '[email protected]_is+'..CS_Prodejci
JOIN DWH_Staging.dim.CreditAdvisor ca
ON prod.KodOZ = ca.CreditAdvisorId
WHERE prod.KonecCinnosti <> ca.CooperationEndDateId '
PRINT @string
EXEC(@string)
变量@strt是什么? –
这是打印错误我已将其删除。@ strt与查询无关 –
它不会返回任何内容... –
而且你发现了什么?这段代码存在明显的问题,但我很好奇你已经尝试了哪些努力。 –
@clifton_h多部分标识符无法绑定。但我不知道如何解决。 –
问题出在编译时。没有可变数据库/模式/表名称。相反,像下面的答案一样,使用动态sql。我的建议是阅读:[动态SQL | Microsoft Docs](https://docs.microsoft.com/zh-cn/sql/odbc/reference/dynamic-sql)在将自己暴露给SQL注入之前 –