|
|
|
Почему производится попытка повторной вставки последней строки курсора?
|
|||
|---|---|---|---|
|
#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:01:37 |
|
||
|
Почему производится попытка повторной вставки последней строки курсора?
|
|||
|---|---|---|---|
|
#18+
Борис Гаркун, Последний FETCH вместо выборки занимается только тем, что делает done=1. Но цикл-то прерывается только при следующем заходе, при проверке done = 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 14:41:04 |
|
||
|
Почему производится попытка повторной вставки последней строки курсора?
|
|||
|---|---|---|---|
|
#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, 14:45:45 |
|
||
|
Почему производится попытка повторной вставки последней строки курсора?
|
|||
|---|---|---|---|
|
#18+
Борис ГаркунЕсть ли более красивый выход нежели использовать Да. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 15:11:25 |
|
||
|
Почему производится попытка повторной вставки последней строки курсора?
|
|||
|---|---|---|---|
|
#18+
Если не нравится два фетча - делайте на LOOP .. LEAVE LOOP .. END LOOP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 15:14:46 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39120634&tid=1832418]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 331ms |

| 0 / 0 |
