74 - Función SQL que retorna un dato compuesto. |
Hemos visto que una función puede no retornar dato, retornar un dato simple (integer, varchar etc.) Ahora veremos como retornar toda una fila de una tabla.
Para indicar que una función retorna una fila de una tabla debemos indicar luego de la palabra returns el nombre de la tabla. Por ejemplo si creamos la tabla libros y cargamos algunos registros:
create table libros( codigo serial, titulo varchar(40) not null, autor varchar(20) default 'Desconocido', editorial varchar(20), precio decimal(6,2), primary key (codigo) ); insert into libros (titulo,autor,editorial,precio) values('El aleph','Borges','Emece',25.33); insert into libros (titulo,autor,editorial,precio) values('Java en 10 minutos','Mario Molina','Siglo XXI',50.65); insert into libros (titulo,autor,editorial,precio) values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',19.95); insert into libros (titulo,autor,editorial,precio) values('Alicia en el pais de las maravillas','Lewis Carroll','Planeta',15);
Luego al definir la función indicamos el nombre de la tabla como dato que devuelve:
create or replace function retornarlibro(int) returns libros as 'select * from libros where codigo=$1 ;' language sql;
Debemos siempre disponer un comando SQL que retorne una fila de la tabla. Luego al llamar la función con un código de libro:
select retornarlibro(4);
Tenemos como resultado un dato compuesto con todos los campos de dicha fila:
(3,"Alicia en el pais de las maravillas","Lewis Carroll",Emece,19.95)