miércoles, febrero 27, 2008

Procedimientos almacenados en PosgreSQL

Bueno aqui dejo un ejemplo de un procedimiento almacenado que realiza un select, y que retorna las filas (los datos) que cumplen con la condicion especificada:


--------------------SPSELECCIONARLECTORNOMBRE--------------------------
create or replace function selectLectorNombre(in nombre varchar,
OUT cod_usuario int, OUT usuario_nombre varchar, OUT usuario_apellido varchar,
OUT usuariorut varchar, OUT usuario_direccion varchar , OUT usuario_telefono varchar, OUT usuario_contrasena varchar,
OUT usuario_tipo int, OUT bloqueado boolean, OUT lector_codabar int)
returns SETOF RECORD AS $sl$
declare
q text;
l record;
begin

q := 'select cod_usuario, usuario_nombre, usuario_apellido, usuario_rut, usuario_direccion,
usuario_telefono, usuario_contrasena, usuario_tipo, bloqueado, lector_codabar from lector where usuario_nombre = ' || quote_literal(nombre)||
' OR usuario_apellido = '|| quote_literal(nombre) ;

for l in execute q loop
cod_usuario := l.cod_usuario;
usuario_nombre := l.usuario_nombre;
usuario_apellido := l.usuario_apellido;
usuariorut := l.usuario_rut;
usuario_direccion := l.usuario_direccion;
usuario_telefono := l.usuario_telefono;
usuario_contrasena := l.usuario_contrasena;
usuario_tipo := l.usuario_tipo;
bloqueado := l.bloqueado;
lector_codabar := l.lector_codabar;
RETURN NEXT;
END LOOP;

RETURN;
END; $sl$ LANGUAGE plpgsql;




--Para ejecutarlo:
select * from selectLectorNombre ('pedro');

No hay comentarios.: