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

Откуда: Münster, Germany
Сообщений: 1743
Доброе время суток!

При декларировании курсора в T-SQL в select, в зависимости от значений переменных надо писать разные условия
напр.
если @ID апеременная 0 то одно условие, а если 2 то другое. Другими словами текст SELECT надо формировать динамически.
Как такое правильно реализовать?
Пробовал в лоб
if @ID=1
begin
DECLADE @myCursor CURSOR FOR SELECT f1,f1 FROM table WHERE id>10
end
else
begin
DECLADE @myCursor CURSOR FOR SELECT f1,f1 FROM table WHERE id<=10
end
не проходит, при сохранении пишет что курсор уже создан. Да и некрасиво так как то.
Как в mssql вообще следует поступать в таких случаях, когда строка запроса должна динамически формироваться?
Exec со строкой в FOR вроде засунуть нельзя. Туплю однако.

Спасибо
18 мар 13, 19:10    [14064178]     Ответить | Цитировать Сообщить модератору
 Re: DECLARE CURSOR с различными вариантами WHERE в SELECT  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SELECT f1,f1 FROM table 
WHERE 
  ( @ID=1 and id > 10 )
  or ( id <= 10 )
18 мар 13, 19:12    [14064193]     Ответить | Цитировать Сообщить модератору
 Re: DECLARE CURSOR с различными вариантами WHERE в SELECT  [new]
Mikhail Tchervonenko
Member

Откуда: Münster, Germany
Сообщений: 1743
Гавриленко Сергей Алексеевич,

так бы подошло если бы не было случая когда where формируется несколько сложнее чем я описал
(я тут конечно несколько упростил). Или надобность в Where вообще отпадает.
18 мар 13, 19:17    [14064206]     Ответить | Цитировать Сообщить модератору
 Re: DECLARE CURSOR с различными вариантами WHERE в SELECT  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
declare @cur cursor
exec sys.sp_executesql N'set @cur = cursor for select * from sys.columns open @cur',N'@cur cursor out',@cur out
fetch next from @cur
18 мар 13, 19:24    [14064238]     Ответить | Цитировать Сообщить модератору
 Re: DECLARE CURSOR с различными вариантами WHERE в SELECT  [new]
Mikhail Tchervonenko
Member

Откуда: Münster, Germany
Сообщений: 1743
locky,

спасибо
18 мар 13, 19:31    [14064268]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить