Hola, estoy haciendo una funcion que me debe retornar un conjunto de elementos que he agrupado en un tipo nuevo que he creado. El problema esta en que la funcion es ejecutada correctamente cuando en el EMS PostgreSQL manager le doy Execute en el lado izquierdo de la funcion, pero cuando trato de ejecutar el script SELECT "FListadoDepartamentos"() me da un error. Debajo les pongo la funcion y el error. Espero tu respuesta.
Saludos
Dayron
CREATE OR REPLACE FUNCTION "public"."FListadoDepartamentos" () RETURNS SETOF "public"."dptolistado" AS
$body$
declare
tabla dptolistado%ROWTYPE;
begin
for tabla in SELECT
"Departamento"."ID_Departamento",
"Departamento"."Descripcion",
"Departamento"."Nombre",
"Profesor"."Categoria_Cientifica",
"Profesor"."Graduado_De",
"Persona"."Solapin",
"Persona"."PNombre",
"Persona"."SNombre",
"Persona"."PApellido",
"Persona"."SApellido",
"Persona"."CI"
FROM
"Departamento"
INNER JOIN "Profesor" ON "Departamento"."SolapinJDpto" = "Profesor"."SolapinProf"
INNER JOIN "Persona" ON "Profesor"."SolapinProf" = "Persona"."Solapin" loop
return next tabla;
end loop;
return;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
ERROR: set-valued function called in context that cannot accept a set
CONTEXT: PL/pgSQL function "FListadoDepartamentos" line 20 at return next