在游标中执行存储过程

Sim*_*dri 3 sql sql-server stored-procedures

我需要为我的数据库中的所有表执行存储过程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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 5

您可以使用类似下面的内容(数据类型可能需要调整).

编辑:请参阅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
Run Code Online (Sandbox Code Playgroud)