Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Рекурсия в хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вопрос о рекурсии в хранимых процедурах. Платформа: MS SQL 7.0 Есть хранимая процедура. Есть таблица, в ней лежит дерево. Задачи: 1. выбрать подветви, одной из вествей 2. в зависимости от целой кучи условий, произвести модификацию (что-то удалить, что увеличить, что то уменьшить). Действия производяться только на одном уровне дерева... и обрабатывать ветвь надо с листьев девева... а известен только корень. т.е. говоря проще, сначала надо получить данные, потом их обработать... для реализации я использовал, курсор, так как мне надо будет потом с этими данными работать. Но при попытке рекурсивного вызова, MSSQL грит, что такой курсор уже объявлен... Я бы с удовольствием использовал временную таблицу, но мне же работать с данными надо будет... Если кто, что сообразит, очень прошу ответить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2001, 09:50 |
|
||
|
Рекурсия в хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Курсор, небось, глобальный (по умолчанию)? Попробуйте так: DECLARE cur CURSOR LOCAL FOR .. ну и так далее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2001, 09:59 |
|
||
|
Рекурсия в хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Решаю подобные задачи. Все рекурсивные алгоритмы реализуются с помощью цикла и стекоподобной структуры (временная таблица). >и обрабатывать ветвь надо с листьев девева... Вот тут позвольте не согласиться - обрабатывать лучше с какого-то узла, являющегося корнем поддерева. Для того, чтобы с деревом/поддеревом можно было удобно работать, нужно для каждой записи использовать флаги узел/лист и т.п. Я использую SQL2000. Для возврата поддерева использую UDF, возвращающую таблицу. В параметрах UDF указываю, должны ли возвращаться узлы или листья (или и то и другое), должны ли выводиться логически удаленные записи и другие параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2001, 10:19 |
|
||
|
Рекурсия в хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
to MasterBo ну ё моё... надоже мне так лохануться... MasterBo жму вашу мужественную лапу, все работает, большое спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2001, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32011305&tid=1825951]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 368ms |

| 0 / 0 |
