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

Откуда:
Сообщений: 28
Добрый день!
Можно ли использовать SELECT в качестве некого цикла?
Т.е. выполнить различные действия столько раз, сколько строк в селекте?
К примеру в некоторых (кастомных) "ответвлениях" SQL есть конструкция SCAN, которая позволяет выполнять некие действия столько раз, сколько строк в выполненном селекте:

SCAN @query
SELECT MyColumn
FROM MyTable

execute{
.............
Выполняем некие действия
...........

}; --end scan @query



Надеюсь, что понятно объяснил))

Спасибо за помощь!
21 янв 19, 16:05    [21790383]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Максим_78
Member

Откуда:
Сообщений: 28
Есть ли нечто подобное в MS SQL?
21 янв 19, 16:06    [21790384]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Максим_78,

Курсоры?
21 янв 19, 16:06    [21790385]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20530
Максим_78
Можно ли использовать SELECT в качестве некого цикла?
Т.е. выполнить различные действия столько раз, сколько строк в селекте?

Function DoSomething(parameters)
Returns Boolean
As
-- Do Something
If Error Then
    Return False
Else
    Reutrn True
End Function

SELECT parameter fields, DoSomething(parameter fields) As Result
FROM TableName
21 янв 19, 16:45    [21790429]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4727
TaPaK
Максим_78,

Курсоры?


Курсоры есть, но если вам надо делать такое на уровне БД, смотрbте SSIS foreach


https://www.youtube.com/results?search_query=SSIS foreach ado enumerator
21 янв 19, 16:58    [21790442]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Максим_78
Member

Откуда:
Сообщений: 28
TaPaK,
Да, видимо Вы правы, нужно через курсоры.
Предположу, что и решение SCAN о котором я упоминал также на курсорах построено.
Спасибо за совет!
22 янв 19, 10:49    [21790848]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Максим_78
Member

Откуда:
Сообщений: 28
Уважаемые форумчане, спасибо за помощь!
22 янв 19, 10:50    [21790851]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
L_argo
Member

Откуда:
Сообщений: 1212
А вот заполнять переменную можно без курсора :)

declare @x varchar(500)

set @x =''

select @x = @x+','+MyField
from ...


н-р удобно перечислить неск. телефонов или мейлов
22 янв 19, 11:32    [21790896]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Использовать декларативный язык для императивного программирования в 2019 году?..
22 янв 19, 14:37    [21791179]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
L_argo
А вот заполнять переменную можно без курсора :)

declare @x varchar(500)

set @x =''

select @x = @x+','+MyField
from ...


н-р удобно перечислить неск. телефонов или мейлов

Не прошел код-ревью, переделывай.
22 янв 19, 15:43    [21791286]     Ответить | Цитировать Сообщить модератору
 Re: SELECT в качестве цикла.  [new]
Владислав Колосов
Member

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

так в старину писали.
22 янв 19, 19:19    [21791496]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить