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)

Responder a