我正在尝试以编程方式访问执行系统存储过程 sp_spaceused 的结果。
如果您将对象的名称作为参数传递,则 sp 返回一个记录集,您可以像这样读取它
CREATE TABLE #TempTable
( [Table_Name] varchar(50),
Row_Count int,
Table_Size varchar(50),
Data_Space_Used varchar(50),
Index_Space_Used varchar(50),
Unused_Space varchar(50)
)
insert into #TempTable EXEC( 'sp_spaceused "tablexx"' )
select * from #TempTable
Table_Name Row_Count Table_Size Data_Space_Used Index_Space_Used Unused_Space
------------ ----------- ----------- ---------------- ----------------- ------------
tablexx 67 64 KB 16 KB 48 KB 0 KB
(1 row(s) affected)
(1 row(s) affected)
问题是这个存储过程,当不带参数使用时,会返回两个不同的记录集,如下所示:
sp_spaceused
database_name database_size unallocated space
-------------- -------------- ------------------
Convenios 11622.75 MB 3.16 MB
reserved data index_size unused
------------- ------------- ----------- ---------
11897696 KB 11784392 KB 103264 KB 10040 KB
我只是想将database_size变成一个变量......所以问题实际上是如何以编程方式访问返回多个记录集的存储过程返回的数据......
我怎样才能做到这一点?