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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое заполнение курсора 
:(
    Опции темы
ksu04061992
Дата 30.11.2015, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.11.2013

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



Добрый день! Нужна помощь . В хранимой процедуре есть заполнение курсора таким образом:
Код

declare @nzak float 
declare @hvr float
declare @hlz float
declare @sum1 float
declare @cur cursor
exec sp_executesql N'set @cur = cursor scroll for 
            Select nzak,hvr,hlz,sum1 from [Bux_zatr].[dbo].[test] 
            where mes >= 1 and mes <= 3 and hlz=20 
            group by  nzak,hvr,hlz  open @cur', N'@cur cursor output',@cur output
fetch next from @cur into @nzak,@hvr,@hlz,@sum1 
while  @@FETCH_STATUS=0
                begin    
                      Insert into [Bux_zatr].[dbo].[Rasp_nds] (nzak,hvr,hlz,sum1) values (@nzak,@hvr,@hlz,@sum1)
                      fetch next from @cur into @nzak,@hvr,@hlz,@sum1 
                end


данный курсор копирует данные из одной таблицы и вставляет в другую, но проблема в том что условие
Код

where mes >= 1 and mes <= 3


меняется в зависимости от выбранных параметров, переданных процедуре, ну например может быть просто 
Код


where mes <= 3


Как реализовать такое изменение условия ? Заранее спасибо
PM MAIL   Вверх
Akina
Дата 30.11.2015, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Формируйте текст курсора в текстовой переменной программненько, учитывая все заморочки, а потом выполняйте.

Кстати, а зачем тут вообще курсор? всё это прекрасно выполняется одним запросом для всех записей сразу. Да и по скорости выиграешь.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
chupachups
Дата 1.12.2015, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 15.10.2008

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



А зачем вообще мудрить с курсором? Разве нельзя просто тем же образом сформировать текст запроса вида INSERT INTO .... SELECT FROM ....
и выполнить его через exec sp_executesql

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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