Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение значений из процедуры / 18 сообщений из 18, страница 1 из 1
01.08.2002, 11:31:01
    #32040193
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Например. Пишу процедуру:

create procedure GetCount
as
begin
select count(*) as MyTableCount from MyTable
end


Хочу в другой процедуре получить количество записей из таблицы MyTable путем вызова GetCount и записать это значение в какую нибудь локальную переменную.

Как мне это сделать???
...
Рейтинг: 0 / 0
01.08.2002, 11:37:36
    #32040195
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
можно написать не процедуру, а функцию. А так - используй параметр с OUT
...
Рейтинг: 0 / 0
01.08.2002, 11:45:40
    #32040199
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Дело не в этом.
Я хотел спросить как мне из процедуры которая возвращет rowset получить значения в локальные переменные.
процедура например такая:

create procedure MyProc
as
begin
select Field1, Field1, ... FieldN from MyTable
end

Где N может быть каким угодно - и использование Output параметров не допустимо.
?????
...
Рейтинг: 0 / 0
01.08.2002, 11:50:19
    #32040202
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create procedure GetCount 
 @i int output
as 
begin 
set @i = (select count(*) as MyTableCount from MyTable) 
end 
.........
exec GetCount @i= @count output
...
Рейтинг: 0 / 0
01.08.2002, 11:57:14
    #32040205
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Без Output параметра!!!

Нужно что-то наподобие OpenQuery, только на локальном сервере:

sekect *
from
OPENQUERY(LINKEDSERVER,'exec MyProc')

только для локального сервера
...
Рейтинг: 0 / 0
01.08.2002, 12:09:54
    #32040214
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
используй что-то типа
INSERT author_sales EXECUTE get_author_sales (BOL)
...
Рейтинг: 0 / 0
01.08.2002, 12:53:49
    #32040245
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Insert - замечательно.

Только, значение из процедуры мне нужно поместить в локальную переменную.
???
...
Рейтинг: 0 / 0
01.08.2002, 13:03:00
    #32040249
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
а такой вариант не подойдет?
Код: plaintext
1.
2.
declare @count int
select @count = count(*) from _table_
...
Рейтинг: 0 / 0
01.08.2002, 13:14:05
    #32040255
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
результат из процедуры заносите в темповую таблицу и дальше с ней работайте
...
Рейтинг: 0 / 0
01.08.2002, 14:13:46
    #32040275
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Прямо сказать - не очень "изящное" решение :-(
...
Рейтинг: 0 / 0
01.08.2002, 14:16:19
    #32040277
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Все вопросы к Биллу Гейтсу....
...
Рейтинг: 0 / 0
01.08.2002, 14:43:10
    #32040287
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Сейчас я создал эту дурацкую таблицу - такой же структуры, что возвращает хранимая процедура
попробывал запустить. Ошибка:

Server: Msg 8164, Level 16, State 1, Line -1074284091
An INSERT EXEC statement cannot be nested.

Вот таблица и скрипт запуска процедуры:

create table #BillGatesLazyMan(
job_id uniqueidentifier,
originating_server varchar(250),
name varchar(250),
enabled int,
description varchar(250),
start_step_id int,
category varchar(250),
owner varchar(250),
notify_level_eventlog int,
notify_level_email int,
notify_level_netsend int,
notify_level_page int,
notify_email_operator varchar(250),
notify_netsend_operator varchar(250),
notify_page_operator varchar(250),
delete_level int,
date_created datetime,
date_modified datetime,
version_number int,
last_run_date int,
last_run_time int,
last_run_outcome int,
next_run_date int,
next_run_time int,
next_run_schedule_id int,
current_execution_status int,
current_execution_step varchar(250),
current_retry_attempt int,
has_step int,
has_schedule int,
has_target int,
type int
)

insert #BillGatesLazyMan
exec msdb.dbo.sp_help_job @job_name ='Prepare data for Names replication (total)',
@job_aspect = job,
@execution_status =4

В чем дело?
...
Рейтинг: 0 / 0
01.08.2002, 14:50:22
    #32040290
Sanek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
1. job - это что ? переменная ?
2. процедура может возвращать значения null ?
если да, то следует в таблице указать что поля могут принимать значения null
...
Рейтинг: 0 / 0
01.08.2002, 14:56:04
    #32040295
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
job убрал....
все поля во временной таблице пометил как null
выдает тоже самую ошибку....

???
...
Рейтинг: 0 / 0
01.08.2002, 14:56:44
    #32040297
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
видимо твоя процедура возвращает рекордсет, тогда нельзя пользоваться insert exec
...
Рейтинг: 0 / 0
01.08.2002, 15:02:59
    #32040302
Sanek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
а текст процедуры можно увидеть ?
...
Рейтинг: 0 / 0
01.08.2002, 15:06:16
    #32040305
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Процедура это системная - ее описание можно посмотреть в BOL.

Вообщем я создал другой топик на этом же форуме:
"Как дождаться окончания выполнения job-а"
...
Рейтинг: 0 / 0
01.08.2002, 15:10:31
    #32040308
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значений из процедуры
Из этой процедуры нельзя сделать insert exec - в ней уже такая конструкция используется, а вложенный insert exec не допускается. Так что не судьба.
Так что придётся разбираться самому в системных таблицах.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение значений из процедуры / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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