RE: [Pgsql-ayuda] Problema con funciones

From: "Fernando Papa" <fpapa(at)claxson(dot)com>
To: <Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx>
Subject: RE: [Pgsql-ayuda] Problema con funciones
Date: 2003-06-19 18:34:55
Message-ID: F1DC5B511E2D1C499E5E20FC6D74160D032DA9C9@exch2000.buehuergo.corp.claxson.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Para mi esta bien como lo haces al principio, con el select:

> bd=> CREATE FUNCTION quita(varchar) RETURNS varchar AS
> bd-> 'DECLARE cadena alias for $1;
> bd'> begin
> bd'> select
> REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLAC
> E(REPLACE(REPLACE(
> bd'> REPLACE($1, ''á'', ''a''), ''Á'', ''A''),''é'',''e''),
> ''É'',''E''), ''Í'', ''I''),''í'',''i''),
> bd'> ''Ó'', ''O''),''ó'',''o''),''Ú'',
> ''U''),''ú'',''u''),''ñ'',''n'');
> bd'> end'
> bd-> LANGUAGE 'plpgsql';

pero es una funcion, asi que:
1) tenes que almacenar el "resultado" del select
2) tenes que devolver un valor

Asi que yo haria algo asi:

CREATE FUNCTION quita(varchar) RETURNS varchar AS
'
DECLARE
cadena alias for $1;
resultado varchar; <--- agregado
begin
select
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE($1, ''á'', ''a''), ''Á'', ''A''),''é'',''e''),
''É'',''E''), ''Í'', ''I''),''í'',''i''),
''Ó'', ''O''),''ó'',''o''),''Ú'',
''U''),''ú'',''u''),''ñ'',''n'') INTO resultado; <--- Modificado el select.
RETURN resultado; <--- Agregado
end' LANGUAGE 'plpgsql';

--
Fernando O. Papa
DBA

> -----Mensaje original-----
> De: Adrian Galindo [mailto:agalindo(at)liceaga(dot)facmed(dot)unam(dot)mx]
> Enviado el: jueves, 19 de junio de 2003 13:36
> Para: Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
> Asunto: Re: [Pgsql-ayuda] Problema con funciones
>
>
> Fernando Papa wrote:
>
> >Pero a ese plpgsql le falta algo:
> >
> >
> Fernando, gracias por la ayuda. Pude avanzar un poco con esta parte.
>
> -------------------------------
> bd=> CREATE FUNCTION quita(varchar) RETURNS varchar AS
> bd-> 'DECLARE cadena alias for $1;
> bd'> begin
> bd'> select
> REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLAC
> E(REPLACE(REPLACE(
> bd'> REPLACE($1, ''á'', ''a''), ''Á'', ''A''),''é'',''e''),
> ''É'',''E''), ''Í'', ''I''),''í'',''i''),
> bd'> ''Ó'', ''O''),''ó'',''o''),''Ú'',
> ''U''),''ú'',''u''),''ñ'',''n'');
> bd'> end'
> bd-> LANGUAGE 'plpgsql';
> CREATE FUNCTION
>
> bd=> select quita('áéíññ');
> WARNING: Error occurred while executing PL/pgSQL function quita
> WARNING: line 3 at SQL statement
> ERROR: SELECT query has no destination for result data.
> If you want to discard the results, use PERFORM instead.
> -------------------------
>
> Sin embargo al querer usar el PERFORM:
> bd=> PERFORM quita('áéíññ');
> ERROR: parser: parse error at or near "PERFORM" at character 1
>
> ¿Alguna idea?
>
> Gracias de antemano.
> Saludos.
> Adrián.
>
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
>

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2003-06-19 18:57:51 Re: Fw: [Pgsql-ayuda] cambiar PGDATA
Previous Message Alvaro Herrera 2003-06-19 18:33:48 Re: [Pgsql-ayuda] cambiar PGDATA