Re: [pgsql-ru-general] Хранимая процедура: возврат строки разного формата

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.

In response to

Responses

Browse pgsql-ru-general by date

  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