Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Mikhail Tchervonenko Member Откуда: Münster, Germany Сообщений: 1728 |
Доброе время суток! При декларировании курсора в 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] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37138 |
SELECT f1,f1 FROM table WHERE ( @ID=1 and id > 10 ) or ( id <= 10 ) |
18 мар 13, 19:12 [14064193] Ответить | Цитировать Сообщить модератору |
Mikhail Tchervonenko Member Откуда: Münster, Germany Сообщений: 1728 |
Гавриленко Сергей Алексеевич, так бы подошло если бы не было случая когда where формируется несколько сложнее чем я описал (я тут конечно несколько упростил). Или надобность в Where вообще отпадает. |
18 мар 13, 19:17 [14064206] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Mikhail Tchervonenko Member Откуда: Münster, Germany Сообщений: 1728 |
locky, спасибо |
18 мар 13, 19:31 [14064268] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |