powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расскажите чайнику, как выгрести данные из процедуры
7 сообщений из 7, страница 1 из 1
Расскажите чайнику, как выгрести данные из процедуры
    #32050072
vvetrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть системная процедура sp_spaceused
Она возвращает 2 result set-а
Как мне получить значение колонки одного из них в переменную ?

Спасибо.

Валерий
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050096
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я зашел в тело этой системной процедуры и выдрал оттуда кусочек :)
с тебя пирожок ;-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
CREATE procedure usp_monitoring_tables
@recipient	varchar( 255 ),
@server_id	varchar( 50 )
as

declare @objname	varchar( 55 )
declare @id		int
declare @rowcount	int
declare @tablesize	int
declare @message	varchar( 2000 )
declare @chr_rowcount	varchar( 20 )
declare @chr_size	varchar( 20 )
declare @chr_CR	varchar( 1 )
declare @sqlstmt	nvarchar( 255 )
declare @dbuse		varchar( 50 )
declare @pagesize	int


set nocount on
set @chr_CR=CHAR( 13 )
select @dbuse=value from settings where settingname='DB'
select @pagesize=low from master.dbo.spt_values where number =  1  and type = 'E'
declare usr_cur_scale cursor for select id, name from sysobjects where type='U'
open usr_cur_scale
fetch next from usr_cur_scale into @id, @objname
while @@fetch_status= 0 
begin
	 /* updateing information about usage space in the sysindexes */ 

	 --set @sqlstmt='dbcc updateusage ('''+@dbuse+''','''+@objname+''')'
 
	 --exec master..sp_executesql @sqlstmt
 

	set @sqlstmt='select @id=id from '+@dbuse+'..sysobjects where type='+''''+'U'+''''+' and name=@objname'
	exec master..sp_executesql @sqlstmt, N'@id int, @objname varchar(55)', @id, @objname
 --	select  from sysobjects where type='U' and name=@objname
 

	select @tablesize=sum(convert(dec( 38 , 0 ),reserved))*@pagesize/ 1024  from sysindexes where id=@id  and indid < 2 
	select @rowcount=sum(rowcnt) from sysindexes where id=@id and indid< 2 
	set @chr_rowcount=convert(varchar( 20 ),@rowcount)
	set @chr_size=convert(varchar( 20 ),@tablesize)
	set @message=isnull(@message,'')+''''+convert(varchar( 25 ),getdate())+''','''+@server_id+''','''+@objname+''','+@chr_rowcount+','+@chr_size+@chr_CR
	fetch next from usr_cur_scale into @id, @objname
end
deallocate usr_cur_scale

 /* sending email */ 
exec master..xp_sendmail
	@recipients=@recipient,
	@message=@message,
	@subject='current_table_size'

GO
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050099
vvetrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Lexis ! ;-)
То есть ты хочешь сказать, что вытащить данные из _таких_ процедур невозможно. Я правильно понял ?
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050104
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно возможно
1. если возвращается один набор - то засовываешь это во временную таблицу
2. если больше чем один, то я не знаю как :)
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050108
vvetrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот и я уже весь MSDN прошерстил.
Ответа не нашёл, потому и вопрос задал.
Насчёт временных таблиц - это очевидно, но для miltiple recordset не работает ;-(
А залесть в тело процедуры мне в голову не пришло, спасибо умные люди (не будем показывать пальцем;-) подсказали !
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050133
Breakneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
insert #tmptable
exec your_procedure

Таблица #tmptable должна иметь такую же структуру, как и выводимый процедурой recordset.
...
Рейтинг: 0 / 0
Расскажите чайнику, как выгрести данные из процедуры
    #32050139
Breakneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, не до конца разобрался в задаче...

А не пробовал дать временной таблице структуру обоих recordset? Может, так прокатит?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расскажите чайнику, как выгрести данные из процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]