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

Спасибо.

Валерий
...
Рейтинг: 0 / 0
12.09.2002, 14:49:30
    #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
12.09.2002, 14:53:13
    #32050099
vvetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите чайнику, как выгрести данные из процедуры
Спасибо, Lexis ! ;-)
То есть ты хочешь сказать, что вытащить данные из _таких_ процедур невозможно. Я правильно понял ?
...
Рейтинг: 0 / 0
12.09.2002, 14:57:11
    #32050104
Lexis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите чайнику, как выгрести данные из процедуры
конечно возможно
1. если возвращается один набор - то засовываешь это во временную таблицу
2. если больше чем один, то я не знаю как :)
...
Рейтинг: 0 / 0
12.09.2002, 15:01:47
    #32050108
vvetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите чайнику, как выгрести данные из процедуры
Вот и я уже весь MSDN прошерстил.
Ответа не нашёл, потому и вопрос задал.
Насчёт временных таблиц - это очевидно, но для miltiple recordset не работает ;-(
А залесть в тело процедуры мне в голову не пришло, спасибо умные люди (не будем показывать пальцем;-) подсказали !
...
Рейтинг: 0 / 0
12.09.2002, 15:43:56
    #32050133
Breakneck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расскажите чайнику, как выгрести данные из процедуры
insert #tmptable
exec your_procedure

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

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


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