Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с (под)процедурой  [new]
syavik
Member

Откуда:
Сообщений: 107
Здравствуйте, Уважаемые!

Имеется процедура, которая выполняет рад действий по параметру ID
К примеру:
create table tmp (id int, value int)
insert tmp
select 1,6
union 
select 2,5
union 
select 3,4
union 
select 4,3
union 
select 5,2


create procedure [p1]
(@id int)
as
begin
update tmp
set value = 123 where id = @id
end
 



Как мне заставить отрабатывать эту процедуру в другой процедуре, функции, запросе, которая выводит несколько ID (для @id)?

select id from tmp where value >=5

Вопрос наверное банален, но увы не нашел по этому вопросу информации. sql2008 r2
23 май 14, 10:47    [16059820]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
Glory
Member

Откуда:
Сообщений: 104751
syavik
Как мне заставить отрабатывать эту процедуру в другой процедуре, функции, запросе, которая выводит несколько ID (для @id)?

В цикле для каждой записи вызвать процедуру
23 май 14, 10:48    [16059827]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
syavik
Member

Откуда:
Сообщений: 107
Glory,
Да, именно так
23 май 14, 10:52    [16059859]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
Glory
Member

Откуда:
Сообщений: 104751
syavik
Да, именно так

Это был не уточнящий вопрос.
Это был ответ.
23 май 14, 10:57    [16059893]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
syavik
Member

Откуда:
Сообщений: 107
Glory,

Спасибо, буду копать в эту сторону.
23 май 14, 11:02    [16059940]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
syavik
Member

Откуда:
Сообщений: 107
Извратился так:
declare @t table(id int)
insert into @t
select id from tmp where value >=5 
qq:
declare @s int
set @s = (
select top 1  id from @t)
if @s > 0
begin
  exec [p1] @s
  delete @t  where id = @s
   goto qq
  end
else print 'completed'
23 май 14, 11:37    [16060261]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с (под)процедурой  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Если критична скорость выполнения, то напишите процедуру на основе вызываемой, которая работает с таблицей, а не с одним параметром.
23 май 14, 12:33    [16060745]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить