我需要为数据库中的所有表执行存储过程 sp_spaceused。
我为此使用了游标,请找到以下查询。问题是我需要在单个结果集中生成报告。
对于下面的查询,我得到了不同的结果。

Declare @Name Varchar(500)
Declare @GetName Cursor
Set     @Getname = Cursor for
select name from sys.tables
Open @Getname
Fetch Next From @Getname into @Name
While @@Fetch_Status=0
Begin
exec sp_spaceused @Name
Fetch Next From @Getname into @Name
End
Close @GetName
Deallocate @GetName

最佳答案

您可以使用如下所示的内容(数据类型可能需要调整)。

编辑:请参阅 Joe 的回答以了解要使用的正确数据类型!

create table #t
(
name sysname,
rows bigint,
reserved varchar(50),
data varchar(50),
index_size varchar(50),
unused varchar(50)
)

EXEC  sp_MSForEachtable 'insert into #t EXEC sp_spaceused ''?'''

select name,rows,reserved,data,index_size,unused
from #t

关于sql - 在游标中执行存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3711197/

10-11 02:11