7 марта 2011 г. 22:56 пользователь Dmitry E. Oboukhov <unera@debian.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> Проверьте аргумент какого типа Вы указываете при вызове.