From: | Dmitriy Igrishin <dmitigr(at)gmail(dot)com> |
---|---|
To: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: [pgsql-ru-general] Хранимая процедура: возврат строки разного формата |
Date: | 2011-03-07 20:32:02 |
Message-ID: | AANLkTinkQBkR8RnPDE4oXR6ijTNfWA-g9T7N_UbD8aaf@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
7 марта 2011 г. 22:56 пользователь Dmitry E. Oboukhov <unera(at)debian(dot)org>написал:
>
> DI> Используйте SELECT * FROM foo();
>
> в приведенном примере SELECT foo() работает,
> а вот про
> SELECT * FROM foo()
>
> говорит ошибка:
>
> ERROR: a column definition list is required for functions returning
> "record"
> SELECT * FROM foo()
> ^
>
> понятное дело что определить column definition list заранее я не могу,
> поскольку дочерние таблицы - разные.
>
> и как быть?
>
Так псевдотип RECORD по своей сути не имеет предопределённой структуры,
то необходимо явно её указывать (включая точный тип данных каждого столбца)
в момент выборки.
Можно использовать hstore, который, начиная с 9.0,
может конструироваться из RECORD.
>
> DI> Если функции quote_ident(), quote_literal() и quote_nullable(). Первая
> DI> принимает в кач-ве аргумента только текст, а вторая и третья
> перегружены.
> DI> Проверьте аргумент какого типа Вы указываете при вызове.
>
> ага поставил ::text и заработало, спасибо!
> --
>
> . ''`. Dmitry E. Oboukhov
> : :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
> `. `~’ GPGKey: 1024D / F8E26537 2006-11-21
> `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
>
--
// Dmitriy.
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2011-03-07 20:35:23 | Re: хранимая процедура: как вернуть NOT FOUND? |
Previous Message | Dmitry E. Oboukhov | 2011-03-07 20:21:50 | Re: Pg documentation in russian |