Re: pasar un rowtype a una funcion

From: "Jose Alberto Sanchez Nieto" <valmanar(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pasar un rowtype a una funcion
Date: 2008-11-03 09:57:33
Message-ID: 9a4551fb0811030157m67a3ce8anfbd739ca1f6f8315@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola y gracias por la respuesta, en principio si que lo estoy llamando desde
una función pero dá error, si declaro el parámetro de recepción en la
función como nombretabla%rowtype el error me lo dá en el %. He leído el
definir esto sólo con el nombre de tabla pero tengo una duda y es que no sé
si con esto recibo sólo la fila que yo quiero con la estructura de la tabla
ó la tabla entera. No obstante tengo en cuenta tu propuesta del type que me
parece correcta, ya la había visto pero se me hacía muy pesado tener que
crear un type por cada tabla (tengo unas trecientas en la aplicación) para
poder hacer esto. En cuanto a los logs me refería más que a como hacerlo a
que si había instrucciones para escribir directamente a un fichero de texto
los logs.
Gracias y saludos.

El 31 de octubre de 2008 18:47, postgres Emanuel CALVO FRANCO <
postgres(dot)arg(at)gmail(dot)com> escribió:- Ocultar texto citado -

Si estas llamando a la función desde una función, no debería pasar.
Ahora bien, si lo llamas desde sql común, no podes pasarle un rowtype
(eso creo *confirmalo*, debido a que SQL no soporta tipos rowtype).
Lo que podes hacer es crear un TYPE (myrowtype), espificando el tipo
de cada campo, tal como lo explica el manual en la pagina 37 (8.3.4
manual de usuario)

En todo caso la consulta se debería ejecutar dentro de la función, si
la consulta la realizas solo apra pasarle a la función.

Respecto de los logs, te aconsejaría que miraras algo sobre rules,
para crear logs en tablas
de la base de datos.(si lo que queres es ahcer logs de tu aplicación
ante cada inserción o update de tabla)

El día 31 de octubre de 2008 10:35, Jose Alberto Sanchez Nieto
<valmanar(at)gmail(dot)com> escribió:
> Hola foro, estoy intentando pasar un rowtype a una función pero me dá
> constantes errores, si en la función que recibe el rowtype en la
declaración
> CREATE OR REPLACE FUNCTION f_ins_con_pos(vv_fila ROWTYPE) --error
> CREATE OR REPLACE FUNCTION f_ins_con_pos(vv_fila tabla%ROWTYPE) --error
> Necesito pasar un rowtype ya que si paso los campos individualmente supera
> el número de parámetros admitidos, ¿se os ocurre como hacerlo?
> También quisiera saber si desde dentro de pgsql puedo crear mis propios
logs
> por aplicación ó función, sé que se utiliza raise pero creo entender que
lo
> envía todo al mismo log del servidor y yo quisiera crear uno específico
por
> aplicación ó función.
> Gracias por adelantado y saludos.
> --
> Jose Alberto Sanchez Nieto
>

--
Emanuel Calvo Franco
Syscope Postgresql DBA
BaPUG Member
--
TIP 8: explain analyze es tu amigo

--
Jose Alberto Sanchez Nieto

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juanjo Roncero 2008-11-03 11:47:24 backup manejando fechas
Previous Message Guido Barosio 2008-11-02 22:22:39 Re: Logos PGDay RdlP