Silvio, gracias por responder.

Pero el type no debería estar creado? Sería el type de la tabla, pero no 
encontré la forma de declarar la funcion

Function foo( reg alumnos_generacion%ROWTYPE ) nada
Function foo( reg alumnos_generacion%TYPE ) nada

No me acepta el %


Con respecto a no necesitar el cursor, tenes razon, pero tener los accesos
en el declare ya se me hizo costumbre.


-----Mensaje original-----
De: Silvio Quadri [mailto:[email protected]] 
Enviado el: Miércoles, 04 de Febrero de 2009 09:29 a.m.
Para: Conrado Blasetti
CC: pgsql-es-ayuda
Asunto: Re: [pgsql-es-ayuda] Pasar como parametro del tipo rowtype

2009/2/3 Conrado Blasetti <[email protected]>:
> Gente, me encuentro un poco mareado...
>
> Tengo la siguiente funcion (resumida):
>
> DECLARE
>  c_alumno CURSOR ( p_cod_alumno NUMERIC ) IS
>  SELECT a.*
>    FROM alumnos_generacion a
>   WHERE orden = ( SELECT MAX(orden)
>                     FROM alumnos_generacion
>                    WHERE cod_alumno = p_cod_alumno)
>     AND cod_alumno = p_cod_alumno;
>
>  reg_alumno alumnos_generacion%ROWTYPE;
> BEGIN
>  ...
>  ...
>  OPEN c_alumno ( p_cod_alumno );
>  FETCH c_alumno INTO reg_alumno;
>  CLOSE c_alumno;
>  ...
>  ...
>  reg_alumno.columna1 := 1;
>  reg_alumno.columna2 := 2;
>  reg_alumno.columna3 := 3;
>  reg_alumno.columna4 := 4;
>  ...
>  ...
>  [1]
>  ...
>  ...
>
> END;
>
> [1] Aquí quiero llamar a la funcion INSERTAR y pasarle como parámetro el 
> registro reg_alumno, como tengo que definir esta nueva function?

Hola Conrado!
Podés generarte un tipo de dato con

CREATE TYPE name AS
    ( attribute_name data_type [, ... ] )

Definir reg_alumno como ese tipo de dato y llamar a la nueva función.
Estaba mirando que no necesitás usar el cursor para obtener los datos ...
Con
select col1, col2, co3 into reg_alumno
from  bla bla bla

es suficiente mientras te asegures que devuelve un solo registro ...

Saludos,


-- 
Silvio Quadri
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo

Responder a