jueves, 26 de marzo de 2020

Procedimientos Almacenados en PostgreSQL


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