|
|
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите пожалуйста как можно прервать выполнение анонимного блока при определенном условии? Например если в нем переменная count1 больше 1000 стала. Внутри блоков куча циклов и всего другого. EXIT вызывает ошибку: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2020, 18:04 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Что-то типа goto надо или типа того ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2020, 18:19 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2020, 18:38 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Return что-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2020, 18:38 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
entrypoint, Guzya, большое спасибо за ответы! Это похоже на то что требуется! Однако возникло два вопроса: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 10:41 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
1-й вопрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. [/quot][/SRC] Ну в циклах прописано что exit по условию. Но почему не попадаем в " RAISE NOTICE 'и сюда не попадаем'; " ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 10:43 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Второй вопрос: Guzya Return что-нибудь. Куда его в анонимном блоке вставить? Куда не вставлю - везде ошибку выдает :-((( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ОШИБКА: конец функции достигнут без RETURN SQL-состояние: 2F005 Контекст: функция PL/pgSQL inline_code_block ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 10:46 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Ну в циклах прописано что exit по условию. Но почему не попадаем в " RAISE NOTICE 'и сюда не попадаем'; " ?[/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 11:19 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per Второй вопрос: Guzya Return что-нибудь. Куда его в анонимном блоке вставить? Куда не вставлю - везде ошибку выдает :-((( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ОШИБКА: конец функции достигнут без RETURN SQL-состояние: 2F005 Контекст: функция PL/pgSQL inline_code_block Можно больше кода для примера ? Какой код выдает такую ошибку ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 11:20 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Так, если return ставлю перед вторым циклом(добавля IF по условию) - то ошибки не возникает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Это получается RETURN с условием надо перед каждым циклом вставлять? о_О ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 11:30 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, У вас где-то ошибка в логике, где-то в коде есть блок из которого не досягаем RETURN Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 11:52 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
entrypoint, метка не там Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:01 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per 1-й вопрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Ну в циклах прописано что exit по условию. Но почему не попадаем в " RAISE NOTICE 'и сюда не попадаем'; " ?[/quot] Может там пропущен вопрос, так лучше? RAISE NOTICE 'и сюда не попадаем И ПОЧЕМУ?'; " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:09 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
entrypoint per, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Но ТС написал "Внутри блоков куча циклов и всего другого. ", а здесь нет кучи циклов, кроме того, нету "всего другого" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:11 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
entrypoint per, У вас где-то ошибка в логике, где-то в коде есть блок из которого не досягаем RETURN Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. В том-то и дело что у меня не функция, а анонимный блок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:12 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
entrypoint per Второй вопрос: пропущено... Куда его в анонимном блоке вставить? Куда не вставлю - везде ошибку выдает :-((( Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ОШИБКА: конец функции достигнут без RETURN SQL-состояние: 2F005 Контекст: функция PL/pgSQL inline_code_block Можно больше кода для примера ? Какой код выдает такую ошибку ? Тот, что в этом сообщении и приведен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:13 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per В том-то и дело что у меня не функция, а анонимный блок. вот анонимный блок Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:16 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, обернуть begin/end Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:17 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
qwwq entrypoint, метка не там Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. А куда тогда надо ставить RETURN? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ЗАМЕЧАНИЕ: yes ЗАМЕЧАНИЕ: yes2 ОШИБКА: конец функции достигнут без RETURN CONTEXT: функция PL/pgSQL inline_code_block ********** Ошибка ********** ОШИБКА: конец функции достигнут без RETURN SQL-состояние: 2F005 Контекст: функция PL/pgSQL inline_code_block Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ОШИБКА: ошибка синтаксиса (примерное положение: "RETURN") LINE 15: RETURN; --<--------ТУТА ^ ********** Ошибка ********** ОШИБКА: ошибка синтаксиса (примерное положение: "RETURN") SQL-состояние: 42601 Символ: 217 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:19 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky per, обернуть begin/end Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Ваш вариант отработал без ошибок. Но как? Получается RETURN вообще не надо ставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:22 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, retun - прекращение работы анонимного блока, а вам нужен выход из именованого блока - exit у вас весь именованный блок = анонимный, то есть получается exit в никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:30 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky per, retun - прекращение работы анонимного блока, а вам нужен выход из именованого блока - exit у вас весь именованный блок = анонимный, то есть получается exit в никуда. Смылс такой, что мне надо прервать работы всего анонимного блока при определенном условии. (это условие срабатывает в 10% случаев) Как сделать в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:33 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky, Вот такая схема примерно: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И в любой момент может сработать условие, как только оно срабатывает - закончить выполнение всего блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:35 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, с любого места программы IF (expression = true) THEN raise notice 'return'; RETURN; END IF; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:43 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky per, с любого места программы IF (expression = true) THEN raise notice 'return'; RETURN; END IF; Верно ли я понял что это можно даже внутри цикла сделать? А EXIT не использовать совсем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:48 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, охватывающий (самого верхнего уровня) блок бегин/енда поставляет вам return неявным образом. это (послабление) -- "синтаксический сахар". а его вы и хотите обойти. поместите его как сабблок внутрь более базового блока. или своими руками делайте return вместо exit из "базового" блока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:50 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky, проверил - из цикла RETURN выводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:50 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per, да Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:55 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky per, да Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Что-то все запустано как-то.... Попробую так: EXIT убрать совсем. В каждом действии и внутри каждого цикла проставить проверку условия и RETURN. блок действия1 цикл1 действия2 цикл2 действия3 цикл3 ... действияN циклN конец блока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 12:59 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per ... А EXIT не использовать совсем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 13:01 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky per ... А EXIT не использовать совсем? В общем пока так работает: в каждом действии есть проверка на условие и RETURN в каждом цикле есть проверка на условие и EXIT Отрабатывает корректно. НО по структуре в принципе - непонятно. Такой вариант нормальный? Или лучше в цикле EXIT менять на RETURN ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 13:04 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per Или лучше в цикле EXIT менять на RETURN ? откуда я знаю, может завтра у вас появятся циклы/блоки внутри циклов/блоков ... и нужно будет выйти на какой-то уровень ... а я скажу, ДА, ставьте ретурн? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 13:14 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Victor Nevsky, Спасибо за помощь! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 13:37 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
per Victor Nevsky, Спасибо за помощь! ;-) ну, о чем вы, не за што ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 15:18 |
|
||
|
Хмурый анонимный блок
|
|||
|---|---|---|---|
|
#18+
Что-то такое хотели? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2020, 15:31 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=1994837]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 139ms |

| 0 / 0 |
