当前位置: 首页 > 面试题库 >

在FROM语句中使用变量

郎长卿
2023-03-14
问题内容

我正在尝试创建一个查询,该查询将针对中的每个服务器中特定数据库中的特定表执行一次sys.server

对于每个server.database.dbo.table我想知道的内容。

所以我需要的是这样的:

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1

while @i <= @numrows
BEGIN
declare @servername varchar(max) = (select servernaam from #servers where rij = @i)

select * from @servername.DATABASE.DBO.TABLE

set @i = @i+1

END

然而,@servername@servername.DATABASE.DBO.TABLE似乎并不工作。

有什么建议吗?感谢您与我一起思考。


问题答案:

您必须使用动态sql:

declare @numrows int = (select count(*) from sys.servers)
declare @i int = 1
declare @Sql(1000)
declare @servername varchar(max)

while @i <= @numrows
BEGIN
select @servername = servernaam 
from #servers where rij = @i

set @Sql = 'select * from '+@servername+'.DATABASE.DBO.TABLE'
exec(@Sql)

set @i = @i+1

END

这是有关exec的更多信息。



 类似资料:
  • 问题内容: 我正在使用R来调用mySQL语句,其中我在语句外定义了变量,例如 但这会返回一个空集,我已经在Google周围搜索并尝试了“。&foo”。“ .foo。” ‘。&& foo。’‘和许多不同的组合,但是它们都不起作用,我认为这应该是mysql问题,而不是我遇到的R特定问题,但不确定。通常,变量具有$值,但R中没有。 问题答案: 这应该工作:

  • 我不完全确定这在Java中是否可行,但在if语句中声明的字符串之外,如何使用if语句中声明的字符串呢?

  • 如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

  • 问题内容: 好的,所以我在Python方面没有那么丰富的经验。 我有以下Python代码: 其中是整数,&是字符串。 如何在没有python的情况下编写变量名称,并将其作为查询文本的一部分? 问题答案: 请注意,参数作为元组传递。 数据库API会正确地对变量进行转义和引用。注意不要使用字符串格式运算符(),因为 它不会进行任何转义或引用。 它容易受到不受控制的字符串格式攻击,例如SQL注入。

  • SELECT 语句,FROM 子句示例 下列示例假设在员工表中存在一个假设的工资字段。请注意,此字段 实际上在 Northwind 数据库员工表之中并不存在。 此示例创建一个 dynaset 型 Recordset,基于 SQL 语句选择在员工表中的所有纪录的姓和名字段。它调用 EnumFields 过程,且该过程打印 Recordset 对象的内容到“调试”窗口。 Sub SelectX1()

  • 问题内容: 我有以下Python代码: 其中是整数,是字符串。 如何在没有python的情况下编写变量名并将其作为查询文本的一部分? 问题答案: 请注意,参数作为元组传递。 数据库API会正确地对变量进行转义和引用。注意不要使用字符串格式运算符(%),因为 它不会进行任何转义或引用。 它容易受到不受控制的字符串格式攻击,例如SQL注入。