如何查询另一个查询的结果?
我正在针对 MSSQL 2005 Server 编写 Trans-SQL 脚本,该脚本旨在查询存在的每个数据库的文件路径。我能够列出系统中存在的数据库。但是如何根据结果运行单独的查询呢?
以下是使用命令(SELECT name from sys.databases
)的数据库列表的输出:
name
----
master
tempdb
model
msdb
现在我想获取此数据库名称(例如 master、tempdb)并输入另一个查询,即(exec sp_helpdb
)。
有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不直接回答您的问题,但如果您想对每个数据库运行查询,您可以使用 sp_msforeachdb。
否则,您将需要使用结果来生成 SQL。
Not answering your question directly, but if you want to run a query for each db, you can use sp_msforeachdb.
Otherwise, you're going to need to use the results to generate your SQL.
您可以基于该查询构建游标,然后循环遍历结果,将它们填充到 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.
一般来说,您的问题的答案是“使用子查询”。
但在本例中,您使用的是 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/
如果我理解正确,您可以在此处使用派生表:-
从中选择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