Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Курсор и EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, что я делаю неправильно: Допустим есть Таблица1, которая хранит следующие данные: I P1 12 13 14 25 26 2 Таблица2, которая хранит следующие данные: I2 NAME27 'aaa'8 'bbb' Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. В приведенном коде программы у меня на выполнение идет запрос на вставку, где SELECT содержит 0 строк и из-за этого, после первого значения курсора процедура заканчивает выполнение, хотя должна проделать три вставки... Если я убираю (комментирую) строку EXECUTE IMMEDIATE цикл по курсору проходит нормально... Если я правильно понимаю, то после того как процедура пытается сделать на немедленное выполнение запрос, который вставляет 0 строк происходит сигнал о том, что больше в переменной курсора данных нет... Что я делаю не так? (Версия: DB2 UDB for iSeries (AS/400) V5R3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 11:24 |
|
||
|
Курсор и EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
1. Почему код работает не так, как вы хотели? 2. Что вы делаете не так? По-моему, это два разных вопроса ;-) 1. Поскольку DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET c1_end=1; относится не только к курсору, чтобы код работал так, как вы хотели, вам придётся писать как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 2. Почему нельзя написать простой insert вместо этой кучи кода? Сколько ни вижу подобных "примеров", не перестаю удивляться. Говорят, в Индии платят построчно, но про Россию такого не слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:35 |
|
||
|
Курсор и EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
процедура имеет входные параметры в зависимости от которых вставляются разные данные... поэтому "простой" INSERT сделать нельзя... после первого EXECUTE IMMEDIATE курсор завершает свою работу, хотя не должен... вот в этом моя проблема... так не выходит Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. возникает ошибка SQL State: 42601 Vendor Code: -199 Message: [SQL0199] Keyword CONTINUE not expected. Valid tokens: GLOBAL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 12:53 |
|
||
|
Курсор и EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
SunnyVaпроцедура имеет входные параметры в зависимости от которых вставляются разные данные... поэтому "простой" INSERT сделать нельзя. Сомнительно как-то. так не выходит Ещё одно чудовищное решение "через ж.": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2006, 13:03 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34189994&tid=1604918]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
128ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 424ms |

| 0 / 0 |
