Re: Función que "funciona" en un servidor y en otro no.

From: "Fernando Moreno" <azazel(dot)7(at)gmail(dot)com>
To: "Pablo Braulio" <brulics(at)gmail(dot)com>
Cc: postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Función que "funciona" en un servidor y en otro no.
Date: 2008-05-06 19:15:20
Message-ID: b1c45530805061215v646c6881td008637ab8fa72f7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Tienes una pequeña confusión ahí; ya que estás usando una variable record,
ahora accederás a los campos de la forma variableRegistro.campo, y no usando
directamente variableRegistro, pues así como en tu consulta regresas un solo
valor, es posible hacerlo con varios.

Pd. El mensaje anterior ya no lo enviaste a la lista de correo, cuida ese
detalle ;).

El día 6 de mayo de 2008 14:06, Pablo Braulio <brulics(at)gmail(dot)com> escribió:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Fernando Moreno escribió:
> > Creo que la respuesta está en el changelog de la versión 8.2, en la
> > sección PL/PgSql:
> >
> > /Allow |FOR| statements to return values to scalars as well as records
> > and row types /
> >
> > Me imagino que previo a esa versión, la variable a usar en el FOR tenía
> > que ser, como te indica el mensaje de error, RECORD o ROWTYPE. Quizás la
> > única solución sea modificar el código para usar record en lugar de
> > integer, haciéndola portable a la versión anterior.
> >
> > Saludos.
> >
>
> Demasiado pronto he dicho que solucionado.
>
> Al cambiar el tipo de la variable a record, ahora me muestra este error:
>
> ERROR: la columna �grupo� es de tipo integer pero la expresi�n es de
> tipo record
> HINT: Necesitar� reescribir la expresi�n o aplicarle una conversi�n de
> tipo.
> CONTEXT: sentencia SQL: �insert into permisosrecursos(grupo,recurso)
> values( $1 , $2 )�
> PL/pgSQL function "nuevorecurso" line 6 at SQL statement
>
> Vuelvo a poner la funcion:
>
> create or replace function nuevorecurso() returns trigger as $$
> declare
> nomgrupo record;
> begin
> for nomgrupo in select id from gruposusuarios
> loop
> insert into permisosrecursos(grupo,recurso)
> values(nomgrupo,new.id);
> end loop;
> return new;
> end;
>
> $$ language plpgsql;
>
> create trigger nuevorecurso after insert on recursos for each row
> execute procedure nuevorecurso();
>
> ¿Como puedo solucionar esto?.
> - --
>
>
> < ¡¡Nos vemos!! >
> ----------------------------
> \
> \
> .::!!!!!!!:.
> .!!!!!:. .:!!!!!!!!!!!!
> ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
> :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
> $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
> $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
> ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
> "*$bd$$$$ '*$$$$$$$$$$$o+#"
> """" """""""
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFIIKwbK7lGsMchFswRAryDAJ4tkIgeOL/3xCvmLWhovkUPzFldzgCffWtG
> bb15peJVytWLSA7SFauSZ2g=
> =zwMP
> -----END PGP SIGNATURE-----
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message mAyErLiNg .M. 2008-05-06 19:41:43 Funciones Pl/pgSQL
Previous Message Jenaro Centeno Gomez 2008-05-06 18:59:46 Re: select into me deja la variable a null