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
>
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 |