Julio Cesar Rodriguez Dominguez wrote:
ese return antes del if, no debe ir ahí, ya que al llegar a ese punto
la función termina. Pasalo hasta abajo despues del end if.
Finalmente, gracias a la ayuda de Cesar Erices he logrado solucionar el
problema. Ahora la función me quedó de la siguiente forma:
CREATE OR REPLACE FUNCTION "public"."RealizarPrestamo" ("ID_Material"
integer, id_prestamo integer, "Tipo" char, "Horario" char,
"Nombre_Solicitante" char, "Apellidos_Solicitante" char,
"Solapin_Solicitante" integer, "Datos_Material_Prestado" char,
"Tipo_Material_Solicitado" char, "Fecha" char) RETURNS boolean AS
$body$
DECLARE myvar character varying(100);
BEGIN
SELECT "Material"."estado_del_prestamo" INTO myvar FROM "Material"
WHERE "Material"."ID_Material" = $1;
IF (myvar = 'no_prestado') THEN
INSERT INTO "Prestamo" VALUES($2,$3,$4,$5,$6,$7,$8,$9, $10);
UPDATE "Material" SET estado_del_prestamo = 'prestado' WHERE
"Material"."ID_Material" = $1;
IF NOT FOUND THEN
RETURN FALSE;
END IF;
RETURN TRUE;
END IF;
RETURN FALSE;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Un saludo y gracias a todos los que se tomaron el trabajo de ayudar
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)