|
|
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
Привет всем. Есть функция, которая делит одно число на другое. Необходимо, если второй параметр равен нулю, то выводить сообщение об ошибке с помощью другой функции. Возможно ли это? Функция деления: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Функция вывода сообщения: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Первая функция успешно создана. Но если выполнить: Код: plsql 1. То получаю ошибку: ОШИБКА: в запросе нет назначения для данных результата HINT: Если вам нужно отбросить результаты SELECT, используйте PERFORM. CONTEXT: функция PL/pgSQL print(real,real), строка 8, оператор SQL-оператор ********** Ошибка ********** ОШИБКА: в запросе нет назначения для данных результата SQL-состояние: 42601 Подсказка: Если вам нужно отбросить результаты SELECT, используйте PERFORM. Контекст: функция PL/pgSQL print(real,real), строка 8, оператор SQL-оператор Я понимаю, что тип функции другой и не совпадает. Пробовал ещё так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Но функция должна возвращать REAL. Как быть? Подскажите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 00:40 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
enakenenaken, Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 00:44 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
Функцию `msg()` я бы сделал возвращающую `void`, а в ней бы делал `RAISE EXCEPTION`. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 00:46 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
vyegorov, Если честно, не понятно. Пробую так. Не выводит ничего. А зачем void? Ведь void ничего вообще не возвращает. Что я не так понял? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 00:58 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
vyegorov, В общем вот что получилось. А select никак нельзя? Ну или просто вывести ячейку с текстом? Чтобы клиентская программа могла её забрать. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 01:19 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
vyegorov, Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 01:20 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
enakenenaken, зачем вам вторая функция? Можно же перехватить исключение прямо в функции print() и выдать все то же самое, что вы делаете в msg(). Хотя зачем это делать, когда можно научить вашу клиентскую программу обрабатывать сообщение «ОШИБКА: деление на ноль» от базы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 02:14 |
|
||
|
Функция в функции PostgreSQL с разными типами данных
|
|||
|---|---|---|---|
|
#18+
Ы, А что если я хочу таблицу со своими кодами ошибок? В датасетах в будущем я могу получить её легко selectом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 10:03 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=114&tid=1998147]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 394ms |

| 0 / 0 |
