【发布时间】:2020-07-10 08:11:03
【问题描述】:
我必须将查询的结果(单列和值被提取)放入变量中。我正在尝试使用游标,但是我根据变量选择要查询的数据库,这是我的查询
SELECT productName, price FROM @ShopName.dbo.Products WHERE ProductName = @ProductName
@ShopName 变量首先从数据库中提取并使用游标分配给变量。 @ProductName 变量由来自 API 的输入参数填充。我必须从特定数据库中获取 ProductName(有多个数据库包含产品),但上面的查询会引发语法错误。此外,当我尝试分配给变量的临时查询时:
SET @Sql = N'SELECT productName, price FROM ' + QUOTENAME(@ShopName) + '.dbo.Products WHERE ProductName = ' + @ProductName
它不允许使用它
DECLARE cursorT CURSOR
FOR
@Sql
这会抛出Incorrect syntax near '@Sql', Expecting '(', SELECT, or WITH
有没有什么方法可以在使用带有数据库名称的变量时在游标中使用该查询?
【问题讨论】:
-
如果你使用的是动态SQL,你必须全部在动态SQL中完成,不能混用。因此,您还需要在动态 SQL 中运行游标。
-
其中哪一部分需要使用光标?
-
除非
@ShopName是表变量,否则您调用...FROM @ShopName...是没有意义的?请提供完整代码而不是部分代码?
标签: sql-server tsql database-cursor