
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.11.2015, 15:11
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
Всем привет. Пишу функцию Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Не работает, ошибка Код: plaintext В чем может быть причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.11.2015, 15:23
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
Есть такой работающий вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. И меня он, в принципе, устраивает. Но вопрос для понимания остается. Почему конструкция "RETURNS setof record" требует минимум два поля? Или причина в чем-то другом? В документаци ответа на этот вопрос я не нашел. Все примеры с одним полем там описаны через return table (...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.11.2015, 16:10
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
Alexey Agafonov, Причина, скорее всего, здесь: RETURNS setof record Пробуйте вместо этого написать RETURNS setof NUMERIC Сейчас в выходных условиях написано возвращение записи. Хотя по факту возвращается NUMERIC (не запись), о чем и сказано в тексте ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.11.2015, 20:29
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
ursido, согласен, я тоже об этом думал. По очень простой (вроде бы) логике, numeric - это частный случай record записи. Она просто состоит из одного поля. Вот это меня и смутило. Отход от теории множеств (один элемент - это частный случай множества). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.11.2015, 23:29
|
|||
|---|---|---|---|
Функция, возвращающая набюор данных |
|||
|
#18+
Alexey Agafonov, numeric — не частный случай record, даже если record содержит единственное поле типа numeric. Это так же, как значение отдельно взятого поля не является частным случаем записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 00:06
|
|||
|---|---|---|---|
Функция, возвращающая набюор данных |
|||
|
#18+
Ы2Alexey Agafonov, numeric — не частный случай record, даже если record содержит единственное поле типа numeric. Это так же, как значение отдельно взятого поля не является частным случаем записи. спор тупоконечников с остроконечниками т.е. вот так вот -- на голубом глазу -- отказывают в праве иметь запись шириной в одно поле хоть уписайсо -- всё божья роса понятно, почему так реализовано -- чтобы вот за эту общность не платить (за компаундный record в C ) но и неудобно в некоторых случаях -- вырождение записи в одно поле приходится обставлять отдельным кодом, даже зная, что так оно быстрее -- а не греет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 03:07
|
|||
|---|---|---|---|
Функция, возвращающая набюор данных |
|||
|
#18+
qwwqотказывают в праве иметь запись шириной в одно поле Кто вам отказывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 08:37
|
|||
|---|---|---|---|
Функция, возвращающая набюор данных |
|||
|
#18+
Ы2qwwqотказывают в праве иметь запись шириной в одно поле Кто вам отказывает? а глаз голубой--голубой [сколько литров мочи не впитай] вот же, ять, второе счастье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 13:39
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
qwwqно и неудобно в некоторых случаях -- вырождение записи в одно поле приходится обставлять отдельным кодом, даже зная, что так оно быстрее -- а не греет Полностью согласен, потому что так (см ниже) - работает. Всего лишь добавил еще одну колонку. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 13:44
|
|||
|---|---|---|---|
|
|||
Функция, возвращающая набюор данных |
|||
|
#18+
Для PostgreSQL setof record - это от ДВУХ колонок. Хотя в классике (и БД и вообще математике) один элемент - это тоже частный случай множества, совсем строго "набор" - это от одного и более элемента. Например, вполне уместна формулировка "наш набор представлен в виде одной колонки айдишников..." и так далее. Тут же странно. Как гвоздями в ядро прибито, что если set of record, но при этом один выходной параметр - не дадим. Причина непонятна, правда, что при наборе типизированных процедур у тех, у который одна колонка, писать надо иначе... Собственно, с чем я и столкнулся, создав эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2015, 15:31
|
|||
|---|---|---|---|
Функция, возвращающая набюор данных |
|||
|
#18+
Alexey AgafonovДля PostgreSQL setof record - это от ДВУХ колонок. Хотя в классике (и БД и вообще математике) один элемент - это тоже частный случай множества, совсем строго "набор" - это от одного и более элемента. Например, вполне уместна формулировка "наш набор представлен в виде одной колонки айдишников..." и так далее. Тут же странно. Как гвоздями в ядро прибито, что если set of record, но при этом один выходной параметр - не дадим. Причина непонятна, правда, что при наборе типизированных процедур у тех, у который одна колонка, писать надо иначе... Собственно, с чем я и столкнулся, создав эту тему. вообще то Код: sql 1. вполне себе возвращает рекорд из 1 поля. и именно компаунд и поле из него с типом вы уже не выдерете Код: sql 1. 2. а алиасом с типами -- как в случае record returning ф-ии, попользоваться не дадут. просто вместо того, чтобы сокрыть от пользователя декларации проблемы/тонкости реализации, разрабы пошли по оракл--вею -- запретили "медленный" вариант сетофа компаундов от одного поля. (могли бы его реализовать как сетоф типов поля, сокрыв "снятие избыточной компаунд--обертки" (уже на этапе разбора декларации) от пользователя языка). эта фигня сделана когда--то в далёком ещё прошлом. В returnin table, который более свежий -- такой фигни уже нет. пользователь деклараций (т.е. языка) оперирует абстракциями, не привязанными к тонкостям реализации. и помнить, что алиасы не туннелируют глубже одного уровня вложенности (как в оракле) -- ему незачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=another_guest&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 717ms |
| total: | 995ms |

| 0 / 0 |
