如何查询另一个查询的结果?

发布于 2024-12-08 20:41:27 字数 359 浏览 0 评论 0 原文

我正在针对 MSSQL 2005 Server 编写 Trans-SQL 脚本,该脚本旨在查询存在的每个数据库的文件路径。我能够列出系统中存在的数据库。但是如何根据结果运行单独的查询呢?

以下是使用命令(SELECT name from sys.databases)的数据库列表的输出:

name
----
master
tempdb
model
msdb

现在我想获取此数据库名称(例如 master、tempdb)并输入另一个查询,即(exec sp_helpdb )。

有什么想法吗?

I am writing a Trans-SQL script against a MSSQL 2005 Server that intends to query file path of each database present. I am able to list out the database present in the system. But how do I run a separate query based on the results?

The following is the output from the list of databases using the command (SELECT name from sys.databases):

name
----
master
tempdb
model
msdb

Now i would like to take this database names (e.g. master, tempdb) and enter into another query namely (exec sp_helpdb <database_name>).

any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

洒一地阳光 2024-12-15 20:41:27

不直接回答您的问题,但如果您想对每个数据库运行查询,您可以使用 sp_msforeachdb

sp_msforeachdb 'EXEC sp_helpdb [?]'

否则,您将需要使用结果来生成 SQL。

Not answering your question directly, but if you want to run a query for each db, you can use sp_msforeachdb.

sp_msforeachdb 'EXEC sp_helpdb [?]'

Otherwise, you're going to need to use the results to generate your SQL.

掩耳倾听 2024-12-15 20:41:27

您可以基于该查询构建游标,然后循环遍历结果,将它们填充到 SQL 变量中,并使用该变量来执行您的存储过程。不幸的是,我现在无法给你一个样本,但这就是我处理它的方式。

You can build a cursor based on that query then loop through the results, stuff them into a SQL variable, and use that variable to exec your sproc. Unfortunately I'm not able to give you a sample right now, but that is the way I would approach it.

指尖微凉心微凉 2024-12-15 20:41:27

一般来说,您的问题的答案是“使用子查询”。

但在本例中,您使用的是 SQL Server 存储过程。因此,最好的方法是编写自己的存储过程:

1) 调用 sp_helpdb (或从 master..sysdatabases 中选择)

2) 迭代结果

下面是一个示例:

http://www.mssqltips.com/sqlservertip/1070/simple-script-to-backup-all-sql-server-databases/

In general, the answer to your question would be "use a subquery".

But in this case, you're using a SQL Server stored procedure. So the best approach is to write your own stored procedure to:

1) call sp_helpdb (or select from master..sysdatabases)

2) Iterate through the results

Here's an example:

http://www.mssqltips.com/sqlservertip/1070/simple-script-to-backup-all-sql-server-databases/

智商已欠费 2024-12-15 20:41:27

如果我理解正确,您可以在此处使用派生表:-

从中选择database.name(您的查询)
(从 sys.databases 中选择名称)数据库

If i am understanding correct , you can use derived table here:-

select database.name (your query) from
(SELECT name from sys.databases) database

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文