From: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
---|---|
To: | rperezm(at)uci(dot)cu |
Cc: | posgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [pgsql-es-ayuda] Función que no me inserta los datos |
Date: | 2009-06-19 13:52:06 |
Message-ID: | 925902880906190652o1ab0a32fp7744d36835da1eef@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 19 de junio de 2009 07:51, Reynier Pérez Mira<rperezm(at)uci(dot)cu> escribió:
> 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?
>
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.
From | Date | Subject | |
---|---|---|---|
Next Message | Felipe Hernández | 2009-06-19 14:17:31 | Re: Select filtrando filas repetidas. |
Previous Message | Sergio Gabriel Rodriguez | 2009-06-19 13:17:11 | Re: Cambiar Directorio Data |