Reynier Pérez Mira wrote:
Julio Cesar Rodriguez Dominguez wrote:
1.- Las cadenas van encerradas en comillas simples, no doble comillas
2.- el operador == no existe
3.- Si lanzas una excepción, se aborta el proceso de la función.

He ajustado la función y ahora queda así:

Aquí está el DDL

CREATE OR REPLACE FUNCTION "public"."RealizarPrestamo" ("ID_Material" integer, id_prestamo integer, "Tipo" char, "Horario" char, "Nombre_Solicitante" char, "Solapin_Solicitante" char, "Datos_Material_Prestado" char, "Tipo_Material_Solicitado" char, "Fecha" char) RETURNS record AS
$body$
DECLARE myvar record;
  BEGIN
SELECT "Material"."estado_del_prestamo" INTO myvar FROM "Material" WHERE "Material"."ID_Material" = $1;
   RETURN myvar;
     IF (myvar.estado_del_prestamo = 'no_prestado') THEN
      INSERT INTO "Material Prestamo" VALUES($1,$2);
      INSERT INTO "Prestamo" VALUES($2,$3,$4,$5,$6,$7,$8,$9,$10);
      UPDATE "Material" SET "Material".estado_del_prestamo = "prestado";
   END IF;
  END
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Notas:
1. Si pongo comillas simples, por ejemplo:
SELECT 'Material'.'estado_del_prestamo' INTO myvar FROM 'Material' ....
SELECT ´Material´.´estado_del_prestamo´ INTO myvar FROM ´Material´ ....

Me devuelve un error (ya lo puse en el correo anterior) y no me deja ejecutar la función.

2. Cuando ejecuto la función (tal y como está arriba) la salida del editor es la siguiente:

Query OK (0.06 sec)
Return Value: (no_prestado)

pero por alguna razón no entra a la condicional.

¿Alguna idea de por que no inserta ni actualiza los datos en las tablas?
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo 
agradecerán

Responder a