Я использую клиент sqirrel sql для работы с Postgres, и проблема в том, что один и тот же запрос возвращает разные результаты.
Если приведенный ниже запрос выполняется как есть, он работает нормально:
select foo.column1 as Field1, 1 as Field2 from (values (3343),(45323)) as Foo
Но если запрос выполняется из сохраненной функции, подобной этой:
CREATE OR REPLACE FUNCTION getSomeData(text) RETURNS setof tmp_stub_type AS
$body$
DECLARE
r tmp_stub_type%rowtype;
BEGIN
FOR r IN
select foo.column1 as Field1, 1 as Field2 from (values (3343),(45323)) as Foo
LOOP
RETURN NEXT r;
END LOOP;
RETURN;
END;
$body$
LANGUAGE 'plpgsql';
Он возвращает то же количество строк, но с значениями UnknownType с одним полем вместо двух.
tmp_stub_type — это обычная таблица с двумя целочисленными полями и ничего более.
Я пытался решить это с помощью PgAdmin Postgres, но он показал мне то же самое, кроме значений - они были правильными, но помещены в одно поле и разделены запятой.
Мне нужно запустить запрос внутри хранимой функции, пожалуйста, помогите разобраться с этим и извините за мой английский.
я использую: Postgres 9.3, Squirrel 3.5.3, ОС Windows