如何获取存储过程的结果

gangnet 2010-12-01 11:19:50
exec sp_MSforeachtable @command1="sp_spaceused '?'"
我用这个命令执行后,得到的结果是

1 AB 0 0 KB 0 KB 0 KB 0 KB

1 NeiPictureTable 0 0 KB 0 KB 0 KB 0 KB

.....

如何获取这个存储过程执行的结果?

他们每行是一个结果集,但是不在一个表中,无法遍历,能够想办法放到一个临时表中,然后从临时表中取结果集也可以。

...全文
166 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gangnet 2010-12-06
  • 打赏
  • 举报
回复
问题找到了,用户用得2005和2008,而且使用架构,导致有很多重名的表:另外数据库的表很多有几千个,导致返回结果太慢,所以出了问题;
谢谢各位!
gangnet 2010-12-06
  • 打赏
  • 举报
回复
问题找到了,用户用得2005和2008,而且使用架构,导致有很多重名的表:另外数据库的表很多有几千个,导致返回结果太慢,所以出了问题;
谢谢各位!
飘零一叶 2010-12-03
  • 打赏
  • 举报
回复
insert into #tb 
exec sp_MSforeachtable @command1="sp_spaceused '?'"
王向飞 2010-12-03
  • 打赏
  • 举报
回复
select * from #
不就是你要的结果集吗?
三断笛 2010-12-02
  • 打赏
  • 举报
回复
不是已经有结果集了嘛。
coleling 2010-12-01
  • 打赏
  • 举报
回复

--先建一个临时表
create table #t(
name nvarchar(128),
rows char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)

insert #t exec sp_MSforeachtable @command1="sp_spaceused '?'"


记得结贴哦
Oraclers 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gangnet 的回复:]
现在的问题就是只能看,不能遍历取结果,我现在需要查出数据中每个表的表名,和每个表中分配的数据库块,已用块大小
[/Quote]
可以用我這個腳本:
SET NOCOUNT ON

DECLARE @db VARCHAR(20)

SET @db=db_name()

DBCC UPDATEUSAGE(@db) WITH NO_INFOMSGS

GO



CREATE TABLE #tblSpace

(

TableName varchar(250) null,

CountNumber int null,

RSpace varchar(15) null,

UsedSpace varchar(15) null,

IndexSpace varchar(15) null,

UnusedSpace varchar(15) null

)

DECLARE @tblname varchar(250)

DECLARE curTbls CURSOR FOR

SELECT name from sysobjects where xtype = 'U'





OPEN CurTbls

FETCH NEXT FROM curTbls INTO @tblName



WHILE @@FETCH_STATUS=0

BEGIN

INSERT #tblSpace EXEC sp_spaceused @tblName

FETCH NEXT FROM curTbls INTO @tblName

END

CLOSE CurTbls

DEALLOCATE curTbls



SELECT * FROM #tblSpace ORDER BY CountNumber DESC



DROP TABLE #tblSpace

gangnet 2010-12-01
  • 打赏
  • 举报
回复
现在的问题就是只能看,不能遍历取结果,我现在需要查出数据中每个表的表名,和每个表中分配的数据库块,已用块大小
dawugui 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 gangnet 的回复:]
exec sp_MSforeachtable @command1="sp_spaceused '?'"
我用这个命令执行后,得到的结果是

1 AB 0 0 KB 0 KB 0 KB 0 KB

1 NeiPictureTable 0 0 KB 0 KB 0 KB 0 KB

.....

如何获取这个存储过程执行的结果?

他们每行是一个结果集,但是不在一个表中,无法遍历,……
[/Quote]
这个结果貌似只能查看,无法获取.帮顶.
fpzgm 2010-12-01
  • 打赏
  • 举报
回复

--在存储过程中加入
create table #tb()

insert into #tb select ……

select * from #tb
gangnet 2010-12-01
  • 打赏
  • 举报
回复
非常感谢回复!

但是我怎么能够得到结果集呢?
-晴天 2010-12-01
  • 打赏
  • 举报
回复
use ReportServer
go
create table #(name nvarchar(100),rows int,reserved nvarchar(20),data nvarchar(20),index_size nvarchar(20),unused nvarchar(20))
go
insert into # exec sp_MSforeachtable @command1="sp_spaceused '?'"
select * from #
go
drop table #
/*
name rows reserved data index_size unused
---------------------------------------------------------------------------------------------------- ----------- -------------------- -------------------- -------------------- --------------------
ConfigurationInfo 17 32 KB 8 KB 24 KB 0 KB
Catalog 1 64 KB 8 KB 56 KB 0 KB
UpgradeInfo 0 0 KB 0 KB 0 KB 0 KB
ModelDrill 0 0 KB 0 KB 0 KB 0 KB
ModelPerspective 0 0 KB 0 KB 0 KB 0 KB
CachePolicy 0 0 KB 0 KB 0 KB 0 KB
Users 3 32 KB 8 KB 24 KB 0 KB
DataSource 0 0 KB 0 KB 0 KB 0 KB
Policies 2 16 KB 8 KB 8 KB 0 KB
ModelItemPolicy 0 0 KB 0 KB 0 KB 0 KB
SecData 2 48 KB 24 KB 24 KB 0 KB
Roles 8 32 KB 8 KB 24 KB 0 KB
PolicyUserRole 4 32 KB 8 KB 24 KB 0 KB
Event 0 0 KB 0 KB 0 KB 0 KB
ExecutionLog 0 0 KB 0 KB 0 KB 0 KB
Subscriptions 0 0 KB 0 KB 0 KB 0 KB
ActiveSubscriptions 0 0 KB 0 KB 0 KB 0 KB
SnapshotData 0 0 KB 0 KB 0 KB 0 KB
ChunkData 0 0 KB 0 KB 0 KB 0 KB
Notifications 0 0 KB 0 KB 0 KB 0 KB
Batch 0 0 KB 0 KB 0 KB 0 KB
Schedule 0 0 KB 0 KB 0 KB 0 KB
ReportSchedule 0 0 KB 0 KB 0 KB 0 KB
RunningJobs 0 0 KB 0 KB 0 KB 0 KB
ServerParametersInstance 0 0 KB 0 KB 0 KB 0 KB
Keys 2 32 KB 24 KB 8 KB 0 KB
History 0 0 KB 0 KB 0 KB 0 KB

(27 行受影响)

*/
gangnet 2010-12-01
  • 打赏
  • 举报
回复
还有一个问题,这个在2000和2005上都没问题吧?
gangnet 2010-12-01
  • 打赏
  • 举报
回复
是先建好了,但是我这个是轮询去做,目的是要得到记录集;
可是程序总是报哪个表对象不存在,我建一个数据库的普通表也是报错;
华夏小卒 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gangnet 的回复:]
coleling: 放心吧,我的结贴是100%;
你的语句和方法很好!

不过,我现在发现这样出了问题,在用语句执行时,总是报#t对象不存在;达不到我的要求,我就希望能直接拿到sp_MSforeachtable @command1="sp_spaceused '?'"

执行的结果,能遍历;
如果问题解决,马上结贴!
[/Quote]还有这事,不是先建好了吗?是
dbo 架构吗
gangnet 2010-12-01
  • 打赏
  • 举报
回复
coleling: 放心吧,我的结贴是100%;
你的语句和方法很好!

不过,我现在发现这样出了问题,在用语句执行时,总是报#t对象不存在;达不到我的要求,我就希望能直接拿到sp_MSforeachtable @command1="sp_spaceused '?'"

执行的结果,能遍历;
如果问题解决,马上结贴!

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧