【发布时间】:2022-11-10 06:23:00
【问题描述】:
USE DATABASE_A
GO
DECLARE @Action_ID AS UNIQUEIDENTIFIER = (SELECT Action_ID FROM Actions WHERE CodeNumber = 'VCT-XXX-000001');
USE DATABASE_B
GO
DECLARE @Property_ID AS INT = (SELECT Property_ID FROM [Properties] WHERE Action_ID = Action_ID);
以上是声明和设置变量@Action_ID 使用从表中选择的查询“行动"在数据库中数据库_A
我想在将针对数据库执行的查询中使用@Action_ID数据库_B但这会引发一个错误,上面写着
“必须声明标量变量“@Action_ID”。
如何在将对数据库执行的查询中使用变量 @
Action_ID数据库_B
【问题讨论】:
-
一个变量只存在于批它是在其中声明的。由于您的后一个查询在不同的批次中,因此
@Action_ID不再存在。要么不使用单独的批处理,要么(可能更好)不更改数据库上下文并为一个查询使用 3 部分命名,为另一个查询使用 2 部分(您在两者中都缺少架构)。 -
您是否打算随后重新使用
@Action_ID变量?如果不只是在具有完全限定名称的第二个查询中直接使用来自变量分配的子查询。
标签: sql-server tsql