Хранимые процедуры. ПОМОГИТЕ!!!

Rumata
Дата: 05.07.2004 12:55:28
Передо мной стоит следующая задача, хранимая процедура должна возвращать определенную выборку из базы данных. Ну если взять простейший вариант:

CREATE FUNCTION f() RETURNS RECORD AS '

SELECT * FROM users;

' LANGUAGE 'sql';


при попытки создания вылетает ошибка

function declared to return record returns multiple columns in final SELECT

Несложно понять, что я не верно задаю возвращаемый тип, но Я НИКАК НЕ МОГУ НАЙТИ ПРАВИЛЬНУЮ АЛЬТЕРНАТИВУ. Помогите понять, как заставить работать этот пример.
mik_s
Дата: 05.07.2004 16:05:48
Ну, если выборка определенная, тогда создай свой тип который будет состоять из предполагаемого набора полей ( например create type lala as ( id int4, name text ).
Потом соотв. делаешь функцию:
create function () return setof lala as
'declare
myvar record;
begin
for myvar in select id, name from mytable loop
return myvar;
end loop;
end;
' language 'plpgsql'
centur
Дата: 05.07.2004 21:18:52
в доке описано детально..


create function () return setof lala as
'declare
myvar record;
begin
for myvar in select id, name from mytable loop
return myvar; <<<<<--- return next myvar;
end loop;

<<<<----RETURN;

end;
' language 'plpgsql'


тут косячокс ,см <<<<---


выбор из функции select * from myfunc() as (перечисляем через запятую все имена полей и типов возвращаемых полей. напрbмер id int, name varchar);
Rumata
Дата: 06.07.2004 11:08:55
Странно, у меня почему-то вылетает ошибка при попытке определения типа:

CREATE TYPE t1 AS (id int4, name text)

может это из-за версии постгресса? у меня 7.2