Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение процедуры для всех записей таблицы 
V
    Опции темы
Wanderer2019
Дата 7.11.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: нет
Всего: 17



Подскажите, как выполнить хранимую процедуру для каждой записи в таблице Table?
PM ICQ MSN   Вверх
Servena
Дата 7.11.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Напиши сценарий, а лучше всего - давай пример. 

PM MAIL   Вверх
Wanderer2019
Дата 7.11.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: нет
Всего: 17



Цитата(Servena @  7.11.2007,  13:25 Найти цитируемый пост)
Напиши сценарий, а лучше всего - давай пример. 

Нутк было бы чего пример...
Есть таблица Table ... Есть процедура Procedure @Param1 @Param2 @Param3

Нужно запустить Procedure для каждой строки из Table. В параметры нужно передать значения из строк этой самой таблицы.
т.е. что то вроде
Код

DECLARE @Param1 varchar(255),@Param2 varchar(255),@Param3 varchar(255)
SELECT @Param1=Tabe.Field1, @Param2=Table.Field2, @Param3=Table.Field3 FROM Table


и вот как быть дальше... как для каждой строки вызвать мою Procedure
PM ICQ MSN   Вверх
Servena
Дата 7.11.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Вот пример в МСДН:
Код

DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID, Title 
FROM AdventureWorks.HumanResources.Employee
WHERE ManagerID =3;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Employee_Cursor;
   END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;

Здесь создается курсор и построчно считываются все строки с таблицы.

Добавлено через 6 минут и 2 секунды
Что-то вроде этого:
Код

DECLARE myCursor CURSOR FOR
SELECT Field1, Field2, Field3 
FROM Table

OPEN myCursor;
FETCH NEXT FROM myCursor;
WHILE @@FETCH_STATUS = 0
   BEGIN
      /*Вот здесь впихнуть функцию, может так:*/ProcedureName Field1,Field2,Field3
      FETCH NEXT FROM myCursor;
   END;
CLOSE myCursor;
DEALLOCATE myCursor;


Добавлено через 14 минут и 53 секунды
А вот как наверное будет вообще правильно.
Код

DECLARE @Param1 varchar(255),@Param2 varchar(255),@Param3 varchar(255)
DECLARE myCursor CURSOR FOR
SELECT Field1, Field2, Field3 
FROM Table
OPEN myCursor;

FETCH NEXT FROM myCursor
INTO @Param1, @Param2, @Param3
WHILE @@FETCH_STATUS = 0
   BEGIN
      ProcedureName @Param1, @Param2, @Param3
      FETCH NEXT FROM myCursor
      INTO @Param1, @Param2, @Param3
   END;
CLOSE myCursor;
DEALLOCATE myCursor;

PM MAIL   Вверх
Wanderer2019
Дата 7.11.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: нет
Всего: 17



Цитата(Servena @  7.11.2007,  13:58 Найти цитируемый пост)
DECLARE @Param1 varchar(255),@Param2 varchar(255),@Param3 varchar(255)
DECLARE myCursor CURSOR FOR
SELECT Field1, Field2, Field3 
FROM Table
OPEN myCursor;
FETCH NEXT FROM myCursor
INTO @Param1, @Param2, @Param3
WHILE @@FETCH_STATUS = 0
   BEGIN
      ProcedureName @Param1, @Param2, @Param3
      FETCH NEXT FROM myCursor
      INTO @Param1, @Param2, @Param3
   END;
CLOSE myCursor;
DEALLOCATE myCursor;


Да. вероятно как то так оно и будет... хотя при попытке вместо процедуры вбить что то типа SELECT @Param1, @Param2 появляется не совсем понятный мне набор данных...


PM ICQ MSN   Вверх
Servena
Дата 7.11.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: 10
Всего: 14



Если использовать Селект, то нужно так:
Код

SELECT @Param1=....

SELECT ..... FROM ....


Добавлено через 2 минуты и 23 секунды
Если посмотреть что выдаст, попробуй PRINT.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.