У меня есть функция, которая возвращает запрошенную записьPostgreSQL: Доступ поля типов записей
CREATE OR REPLACE FUNCTION atPeriod(
IN segment segmentST,
IN period period,
OUT n integer,
OUT s segmentST,
OUT p pointST)
RETURNS record AS
'$libdir/Hermes', 'atPeriodSegmentSTV1'
LANGUAGE c STABLE STRICT
COST 1;
Я называю эту функцию в другой функции
CREATE OR REPLACE FUNCTION distance(seg1 segmentST, seg2 segmentST) RETURNS realTS AS
$BODY$
DECLARE
projseg1 record;
projseg2 record;
BEGIN
SELECT atPeriod(seg1,p) INTO projseg1;
SELECT atPeriod(seg2,p) INTO projseg2;
IF (projseg1).n = 2 AND (projseg2).n = 2 THEN
...
END IF;
END;
$BODY$ LANGUAGE plpgsql;
Когда я выполнить вторую функцию я получаю ошибку
********** Error **********
ERROR: record "projseg1" has no field "n"
SQL state: 42703
Если вместо этого я вызываю первую функцию в операторе SQL
WITH Rec AS (
select 2 as seg_id, atPeriod(SegmentST(
pointst('2012-01-01 08:00:00', 1, 2),
pointst('2012-01-01 08:02:00', 2, 2)),
period('2012-01-01 08:00:00', '2012-01-01 08:01:00')
) as seg
)
Select (seg).n from rec
Получаю значение 2 и не допускает ошибок.
Любой намек на то, как решить эту проблему?
Перевести это 'n'a па идентификатор пу ли Колонны«п»данс ле типа де données де л 'enregistrement' –
@vivek На самом деле довольно удобно иметь ошибки на языке оригинала (хотя, конечно, английские сводки хороши). Исходное сообщение может быть скопировано в исходном коде после быстрого поиска в файлах перевода, чтобы получить шаблон английского сообщения, из которого он пришел. Перевод обычно не может быть. –
@CraigRinger Я не понимаю, на каком языке это, если бы я знал, тогда я могу использовать переводчик. В этом случае только OP или тот, кто может читать этот язык, только понимают, что это значит :) –