92 - Procedimientos Almacenados (crear- ejecutar)


Problema:

Una librería almacena los datos de sus libros en una tabla denominada "libros".

Eliminamos "libros", creamos la tabla y luego ingresamos algunos registros:

 drop table libros;
 create table libros(
  titulo varchar2(40),
  autor varchar2(30),
  editorial varchar2(20),
  precio number(5,2)
 );

insert into libros values('Uno','Richard Bach','Planeta',15);
insert into libros values('Ilusiones','Richard Bach','Planeta',18);
insert into libros values('El aleph','Borges','Emece',25);
insert into libros values('Aprenda PHP','Mario Molina','Nuevo siglo',45);
insert into libros values('Matematica estas ahi','Paenza','Nuevo siglo',12);
insert into libros values('Java en 10 minutos','Mario Molina','Paidos',35);

La librería, frecuentemente, aumenta los precios de los libros en un 10%. Necesitamos un procedimiento almacenado que actualice los precios de los libros aumentándolos en un 10%:

 create or replace procedure pa_libros_aumentar10
  as
  begin
   update libros set precio=precio+(precio*0.1);
  end;
  /

Lo ejecutamos:

 execute pa_libros_aumentar10;

Verificamos que los precios han aumentado:

 select *from libros;

Volvemos a ejecutar el procedimiento:

 execute pa_libros_aumentar10;

Verificamos que los precios han aumentado nuevamente:

 select *from libros;

Ingresemos el siguiente lote de comandos en el Oracle SQL Developer:

 drop table libros;

 create table libros(
  titulo varchar2(40),
  autor varchar2(30),
  editorial varchar2(20),
  precio number(5,2)
 );

 insert into libros values('Uno','Richard Bach','Planeta',15);
 insert into libros values('Ilusiones','Richard Bach','Planeta',18);
 insert into libros values('El aleph','Borges','Emece',25);
 insert into libros values('Aprenda PHP','Mario Molina','Nuevo siglo',45);
 insert into libros values('Matematica estas ahi','Paenza','Nuevo siglo',12);
 insert into libros values('Java en 10 minutos','Mario Molina','Paidos',35);

 -- La librería, frecuentemente, aumenta los precios de los libros en un 10%.
 -- Necesitamos un procedimiento almacenado que actualice los precios de los
 -- libros aumentándolos en un 10%:
 create or replace procedure pa_libros_aumentar10
  as
  begin
   update libros set precio=precio+(precio*0.1);
  end;
  /
 -- Lo ejecutamos:
 execute pa_libros_aumentar10;

 -- Verificamos que los precios han aumentado:
 select * from libros;

 -- Volvemos a ejecutar el procedimiento:
 execute pa_libros_aumentar10;

 -- Verificamos que los precios han aumentado nuevamente:

 select * from libros;

La ejecución de este lote de comandos SQL genera una salida similar a:

SQL Developer procedimientos almacenados crear

En el panel de la izquierda del programa SQL Developer podemos navegar los distintos objetos creados en la base de datos seleccionada. Hay una entrada específica para los procedimientos almacenados:

SQL Developer procedimientos almacenados crear

Cuando seleccionamos un procedimiento almacenado en particular podemos ejecutarlo, depurarlo con distintas herramientas que nos provee SQL Developer.


Retornar