Skip site navigation (1) Skip section navigation (2)

Re: duda sobre function en postgress

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Pepe Ballaga <pepe(at)transnet(dot)cu>
Cc: Ayuda Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: duda sobre function en postgress
Date: 2005-06-17 17:38:13
Message-ID: 42B30A85.107@soft-com.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Tienes varios problemas con esta funcion:

1. Como ya te han dicho falta un return. Si no queres que devuelva nada 
no la declares como 'RETURNS int4'.

2. Faltan el caracter ';' al final de varias de las sentencias. En la 
documentacion de pl/pgsql dice: 'Each declaration and each statement 
within a block is terminated by a semicolon.'

3. Tienes un problema de lógica. Revisala porque si lo que quieres es 
que inserte nuevos usuarios, o les actualice la clave si ya existen, te 
vas a encontrar cuando actualices que en vez de actualizar la clave va a 
insertar un nuevo registro.

Saludos,
-- 
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************


Pepe Ballaga escribió:
> amigos ya hice la funcion tal y como me dijeron (por cierto que no se 
> donde ponerle el return que me dicen que falta), pero el asunto es que 
> me da estos errores cuando lo ejecuto (errores que salen en el log del 
> status del servidor) y no me hace nada en la tabla. ¿podrian ayudarme?. 
> disculpen tantas preguntas. muchas gracias
> 
> syntax error at or near "if" at character 66
> 
> Select nombre, clave from admin where nombre=$1 and clave=$2 if not $3 
> then insert into admin values($4,$5,null,null) else update admin set 
> clave=$6 where nombre=$7 end if
> 
> PL/pgSQL function "adminahora" line 2 at perform
> 
> esta es la funcion en si
> 
> 
> CREATE OR REPLACE FUNCTION adminahora(text, text)
>  RETURNS int4 AS
> $BODY$
> BEGIN
> perform nombre,clave from admin where nombre=$1 and clave=$2
> if not found then
> insert into admin values($1,$2,null,null)
> else
> update admin set clave=$2 where nombre=$1
> end if;
> end;
> $BODY$
>  LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION adminahora(text, text) OWNER TO postgres;
> 
> 
> PEPE
> 
> Pepe Ballaga
> Analista de Sistemas
> SITRANS. La Habana Cuba
> Tel: 8624685
> pepe(dot)ballaga(at)gmail(dot)com
> ----- Original Message ----- From: "Jaime Casanova" 
> <systemguards(at)gmail(dot)com>
> To: "Pepe Ballaga" <pepe(at)transnet(dot)cu>
> Cc: "Ayuda Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Thursday, June 16, 2005 6:18 PM
> Subject: Re: [pgsql-es-ayuda] duda sobre function en postgress
> 
> 
>> On 6/16/05, Pepe Ballaga <pepe(at)transnet(dot)cu> wrote:
>>
>>> amigos esta es la funcion que cree, pero no me inserta nada en la 
>>> tabla. por
>>> cierto que la mando a ejecutar en el Query tool de la siguiente manera.
>>> ¿esta bien asi?¿que me falta?. creo la funcion. pero no me daningun
>>> resultado.
>>>
>>
>> Logico, no le estas poniendo "RETURN valor_entero;" al final, eso te 
>> falta.
>>
>> -- 
>> Atentamente,
>> Jaime Casanova
>> (DBA: DataBase Aniquilator ;)
>>
>>
>>




In response to

pgsql-es-ayuda by date

Next:From: Juan Pablo GODate: 2005-06-17 17:49:33
Subject: Re: duda sobre function en postgress
Previous:From: Mario Soto Cordones - VenezuelaDate: 2005-06-17 16:55:48
Subject: Re: ERROR: SELECT query has no destination for result data

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group