Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! :) Проблема следующая, требуется написать "цикл", а может конечно это можно сделать и по другому, в котором запускалась процедура с 3 параметрами. Дано: dbo.procedure @param1, @param2, @param3 -- добавляет найденную строку в таблицу dbo.table1 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -- таблица в которую добавляем значения полученные из процедцры Сейчас: В процедуре имеется 10 переменных, в которые записывается результат, полученный используя параметры переданные в процедуру. Код: sql 1. 2. 3. таких селектов несколько с разным значением v4 Если запрос вернул NULL пишем в переменную "0". Далее все 10 переменных записываются в table1. Процедура выполняется несколько десятков раз (@param1 @param2 @param3 - это списки) Требуется: что что вроде запуска 3х уровневого цикла, типа: Код: java 1. 2. 3. 4. 5. 6. 7. Нашел что это можно сделать при помощи курсоров, но некоторые пишут что это не есть хорошо. Может кто-нибудь подскажет как это лучше всего сделать или в какую сторону копать. :) P.S. Если что то непонятно написал, спрашивайте. :) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 12:29 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
А почему все эти циклы и вставки не делать прямо в процедуре-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 13:43 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Она ещё в других местах используется ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 14:11 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Ну в обрамляющей процедуре... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 15:40 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
WHILE - чем не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 16:38 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Lomaster_Нашел что это можно сделать при помощи курсоров, но некоторые пишут что это не есть хорошо. Может кто-нибудь подскажет как это лучше всего сделать или в какую сторону копать. :)Циклы в MSSQL делаются с помощью WHILE, а перебирать списки (наверное, имеются в виду таблицы со значениями?) можно курсорами, ну или можно имитировать их, доставая очередную запись, и удаляя её после обработки. Ничего страшного в курсорах нет, они как раз предназначены для перебора значений. "некоторые пишут что это не есть хорошо" - имеется в виду то, что лучше обрабатывать записи вместе, а не перебирать их по одной, но если уж вам нужно их перебрать для вызовов процедуры, то используйте курсор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 19:10 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
alexeyvgLomaster_Нашел что это можно сделать при помощи курсоров, но некоторые пишут что это не есть хорошо. Может кто-нибудь подскажет как это лучше всего сделать или в какую сторону копать. :)Циклы в MSSQL делаются с помощью WHILE, а перебирать списки (наверное, имеются в виду таблицы со значениями?) можно курсорами, ну или можно имитировать их, доставая очередную запись, и удаляя её после обработки. Ничего страшного в курсорах нет, они как раз предназначены для перебора значений. "некоторые пишут что это не есть хорошо" - имеется в виду то, что лучше обрабатывать записи вместе, а не перебирать их по одной, но если уж вам нужно их перебрать для вызовов процедуры, то используйте курсор.Курсор как раз и обходится обычно в цикле WHILE. Так что как их можно противопоставлять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 20:07 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Lomaster_, Ну совсем непонятно как и что должно работать. Тут три переменные, тут их десять. Никакого алгоритма "цикла" не описано. Есть ощущение, что вы пытаетесь работать с данными в БД как в обычном языке программирования - построчно, отсюда for и циклы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 20:42 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
iapКурсор как раз и обходится обычно в цикле WHILE. Так что как их можно противопоставлять?Может, я не очень удачно выразился, непонятно для ТС... Я имел в виду, что нужно сделать цикл, но записи перебирать в нём можно не только с помощью курсора. Так что в принципе курсоры и циклы разные понятия, их нельзя ни противопоставлять, ни отождествлять :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2018, 23:15 |
|
||
|
Помощь в написании "цикла"
|
|||
|---|---|---|---|
|
#18+
Lomaster_, t-SQL это декларативный язык, на нем надо писать "что делать", а не "как делать". Если вы будете писать обработку каждого значения и каждой строки декларативно, то получите значительное снижение производительности. Чтобы все работало быстро, сперва необходимо перенести список на сервер, затем выполнить по отношению к списку запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39731306&tid=1688798]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 399ms |

| 0 / 0 |
