powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение значений из процедуры
18 сообщений из 18, страница 1 из 1
Получение значений из процедуры
    #32040193
Panov Vitaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например. Пишу процедуру:

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


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

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

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

Где N может быть каким угодно - и использование Output параметров не допустимо.
?????
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #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
Получение значений из процедуры
    #32040205
Panov Vitaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без Output параметра!!!

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

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

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

Только, значение из процедуры мне нужно поместить в локальную переменную.
???
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #32040249
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а такой вариант не подойдет?
Код: plaintext
1.
2.
declare @count int
select @count = count(*) from _table_
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #32040255
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
результат из процедуры заносите в темповую таблицу и дальше с ней работайте
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #32040275
Panov Vitaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прямо сказать - не очень "изящное" решение :-(
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #32040277
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все вопросы к Биллу Гейтсу....
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #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
Получение значений из процедуры
    #32040290
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. job - это что ? переменная ?
2. процедура может возвращать значения null ?
если да, то следует в таблице указать что поля могут принимать значения null
...
Рейтинг: 0 / 0
Получение значений из процедуры
    #32040295
Panov Vitaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
job убрал....
все поля во временной таблице пометил как null
выдает тоже самую ошибку....

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

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


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