|
|
|
Простой вопрос по : CASE ... END CASE;
|
|||
|---|---|---|---|
|
#18+
Добрый день. Пример из 'учебника' : Код: plsql 1. 2. 3. 4. 5. 6. Вот, если условий WHEN ... THEN много, и нужно в результате выполнить команду INSERT, при условии, что хоть один WHEN ... THEN дал положительный исход. Создаю флаг в false и в каждом из условий меняю его на true, потом проверяю, если флаг в true -- делаю INSERT. А есть более простая конструкция, чтобы без флага ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 12:16:24 |
|
||
|
Простой вопрос по : CASE ... END CASE;
|
|||
|---|---|---|---|
|
#18+
insert into t (v) select v from ( select case when t between 1 and 10 then 'value is between zero and ten' when 11 and 20 then 'value is between eleven and twenty' end v from t2 ) where v is not null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 12:48:11 |
|
||
|
Простой вопрос по : CASE ... END CASE;
|
|||
|---|---|---|---|
|
#18+
Проще некуда, дык челу и на ёлку влезть. Он может проверят непустотность msg-а , но вычислительно с флагом дешевле. а по объёму кода -- проще сбрасывать пердустановленный флаг в ELSE . (а не выставлять в каждом WHEN ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 18:31:31 |
|
||
|
Простой вопрос по : CASE ... END CASE;
|
|||
|---|---|---|---|
|
#18+
Проще некуда, спасибо за ответ, но предложенную конструкцию я так и не осилил. И, если я правильно понял : " но вычислительно с флагом дешевле " автора qwwq, то лучше останусь на варианте с флагом, чем потеряю скорость выполнения. Правда, " сбрасывать пердустановленный флаг в ELSE ", как вариант сократить код, я тоже не смог прикрутить к своему примеру. Переделал на IF-THEN для примера : Заготовка Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. По выполнению кода select proba(); получаю : Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 17:57:53 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=123&tid=1998477]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 409ms |

| 0 / 0 |
