PROCEDIMIENTOS ALMACENADOS - FUNCIONES EN POSGREST
EJERCICIOS:
1.
Con una función, dependiendo de un parámetro de entrada que podrá ser: CINCO o
TODOS, listar de la tabla “categorias”
el respectivo número de registros.
create or replace function listarCategorias(opcion
varchar,out c1 int, out c2 varchar) returns setof record as $$ begin
if opcion='cinco' then
return query select * from categorias limit 5; end
if;
if opcion='todos' then
return query select * from categorias; end if; end;
$$ language plpgsql
select * from listarCategorias('todos')
2.
Crear
una función para insertar una categoría, enviando como parámetro el nombre de
la categoría, y finalmente mostrar el registro reciente insertado.
create or replace function insertarMostrar(nombre
varchar,out c1 int, out c2 varchar) returns setof RECORD as $$ begin
insert into categorias(cat_nombre) values(nombre);
return query select * from categorias order by cat_id
desc limit 1; end;
$$ language plpgsql
select*from insertarMostrar('SALCHICHONES')
3.
Crear
un procedimiento almacenado que lea 3 parámetros, el primero será para
identificar el caso, el segundo es un parámetro del id y el tercero es la
descripción para la tabla prueba, si el número ingresado en el primer parámetro
es 1, se deberá realizar una inserción en la tabla pruebas con los parámetros 2
y 3. si el primer parámetro es 2 se debe realizar una actualización del
registro correspondiente al id enviado en el parámetro 2 y se debe actualizar
la descripción del parámetro 3. Y finalmente si el parámetro 1 es igual a 3, se
debe eliminar el registro correspondiente al id enviado en el parámetro 2.
CREATE
TABLE prueba
(
idprueba
integer, descripcion varchar(40),
PRIMARY KEY(idprueba) )
create or replace function abm_prueba(band numeric,
cidprueba integer, cdescripcion varchar) returns void as $$
begin
case band
when
1 then
INSERT
INTO prueba VALUES (cidprueba, cdescripcion);
when
2 then
update
prueba set descripcion=cdescripcion where idprueba=cidprueba; when
3 then
delete
from prueba where idprueba=cidprueba; end case; end
$$ language plpgsql;
select abm_prueba(3,4,'pruebamodificado'); select *
from prueba
No hay comentarios.:
Publicar un comentario