
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.12.2015, 14:01:37
|
|||
|---|---|---|---|
|
|||
Почему производится попытка повторной вставки последней строки курсора? |
|||
|
#18+
Здравствуйте! Есть такой кусок кода внутри хранимой процедуры: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. запуск этой процедуры говорит, что в таблицу bng347_product_ids через vvirtuemart_product_id производится попытка вставки не уникального значения, которое добывается из последней строки, выдаваемой вышеприведённым курсором. При этом сам селект курсора возвращает только уникальные virtuemart_product_id. И то, что пытается вставиться дважды, происходит из последней строки, возвращаемой курсором. Что заставляет последнее значение virtuemart_product_id из курсора записываться дважды в таблицу bng347_product_ids, как это избежать не прибегая к IF NOT(EXISTS(...))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.12.2015, 14:41:04
|
|||
|---|---|---|---|
Почему производится попытка повторной вставки последней строки курсора? |
|||
|
#18+
Борис Гаркун, Последний FETCH вместо выборки занимается только тем, что делает done=1. Но цикл-то прерывается только при следующем заходе, при проверке done = 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.12.2015, 14:45:45
|
|||
|---|---|---|---|
|
|||
Почему производится попытка повторной вставки последней строки курсора? |
|||
|
#18+
miksoftПоследний FETCH вместо выборки занимается только тем, что делает done=1. Спасибо. Есть ли более красивый выход нежели использовать IF NOT(EXISTS(SELECT virtuemart_product_id FROM bng347_product_ids WHERE virtuemart_product_id = vvirtuemart_product_id)) THEN INSERT INTO bng347_product_ids VALUE(vvirtuemart_product_id); END IF; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.12.2015, 15:11:25
|
|||
|---|---|---|---|
Почему производится попытка повторной вставки последней строки курсора? |
|||
|
#18+
Борис ГаркунЕсть ли более красивый выход нежели использовать Да. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.12.2015, 15:14:46
|
|||
|---|---|---|---|
Почему производится попытка повторной вставки последней строки курсора? |
|||
|
#18+
Если не нравится два фетча - делайте на LOOP .. LEAVE LOOP .. END LOOP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1832418]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 311ms |

| 0 / 0 |
