SlideShare una empresa de Scribd logo
UD – Planificación y gestión del desarrollo
de software
Actividad 3: Procedimientos
almacenados
Actividad 2: Procedimientos
almacenados
1. Creación de procedimientos
2. Declaración de procedimientos
Procedimientos almacenados
 Un procedimiento almacenado es un conjunto de instrucciones a las que se les
da un nombre, se almacena en la base de datos activa. Permiten agrupar y
organizar tareas repetitivas.
 Ventajas:
 - comparten la lógica de la aplicación con las otras aplicaciones, con lo cual el
acceso y las modificaciones de los datos se hacen en un solo sitio.
 - permiten realizar todas las operaciones que los usuarios necesitan evitando
que tengan acceso directo a las tablas.
 - reducen el tráfico de red; en vez de enviar muchas instrucciones, los usuarios
realizan operaciones enviando una única instrucción, lo cual disminuye el
número de solicitudes entre el cliente y el servidor.
 Un procedimiento almacenados puede hacer referencia a objetos que no
existen al momento de crearlo. Los objetos deben existir cuando se ejecute el
procedimiento almacenado.
Procedimientos Almacenados (crear- ejecutar)
• Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para
verificar si son correctas sintácticamente. Si se encuentra algún error, el
procedimiento se compila, pero aparece un mensaje "con advertencias" que indica tal
situación.
• Un procedimiento almacenado se invoca llamándolo.
• En primer lugar se deben tipear y probar las instrucciones que se incluyen en el
procedimiento almacenado, luego, si se obtiene el resultado esperado, se crea el
procedimiento.
• Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones
definidas por el usuario, a otros procedimientos almacenados.
• Un procedimiento almacenado pueden incluir cualquier cantidad y tipo de
instrucciones DML (de manipulación de datos, como insert, update, delete), no
instrucciones DDL (de definición de datos, como create..., drop... alter...).
• Para crear un procedimiento almacenado empleamos la instrucción "create procedure".
La sintaxis básica parcial es:
• create or replace procedure NOMBREPROCEDIMIENTO
• As
• begin
• INSTRUCCIONES
• end;
Procedimientos Almacenados (crear- ejecutar)
• El bloque de instrucciones comienza luego de "begin" y acaba con "end".
• Si empleamos "or replace", se sobreescribe (se reemplaza) un procedimiento existente; si se
omite y existe un procedimiento con el nombre que le asignamos, Oracle mostrará un
mensaje de error indicando tal situación.
• Para diferenciar los procedimientos almacenados del sistema de los procedimientos
almacenados creados por el usuario use un prefijo, por ejemplo "pa_" cuando les de el
nombre.
• Con las siguientes instrucciones creamos un procedimiento almacenado llamado
"pa_libros_aumentar10" que incrementa en un 10% el precio de todos los libros:
create procedure pa_libros_aumentar10
as
update libros set precio=precio+precio*0.1;
• Entonces, creamos un procedimiento almacenado colocando "create procedure" (o "create
or replace", si es que desea reemplazar el existente), luego el nombre del procedimiento y
seguido de "as" las sentencias que definen el procedimiento.
• Para ejecutar el procedimiento almacenado creado anteriormente tipeamos:
• execute pa_libros_aumentar10;
• Entonces, para ejecutar un procedimiento almacenado colocamos "execute" seguido del
nombre del procedimiento.
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
PRIMER PROBLEMA
Una empresa almacena los datos de sus
empleados en una tabla llamada "empleados".
1- Eliminamos la tabla y la creamos:
drop table empleados;
create table empleados(
documento char(8),
nombre varchar2(20),
apellido varchar2(20),
sueldo number(6,2),
cantidadhijos number(2,0),
fechaingreso date,
primary key(documento) );
2- Ingrese algunos registros:
insert into empleados
values('22222222','Juan','Perez',200,2,'10/
10/1980');
insert into empleados
values('22333333','Luis','Lopez',250,0,'01/
02/1990');
insert into empleados
values('22444444','Marta','Perez',350,1,'02
/05/1995');
insert into empleados
values('22555555','Susana','Garcia',400,2,'
15/12/2000');
insert into empleados
values('22666666','Jose
Maria','Morales',500,3,'25/08/2005');
3- Cree (o reemplace) el procedimiento
almacenado llamado "pa_aumentarsueldo" que
aumente los sueldos inferiores al promedio en
un 20%
4- Ejecute el procedimiento creado
anteriormente
5- Verifique que los sueldos han aumentado
6- Ejecute el procedimiento nuevamente
7- Verifique que los sueldos han aumentado
8- Elimine la tabla "empleados_antiguos"
9- Cree la tabla "empleados_antiguos"
create table empleados_antiguos(
documento char(8), nombre
varchar2(40) );
10- Cree (o reemplace) un procedimiento
almacenado que ingrese en la tabla
"empleados_antiguos" el documento, nombre y
apellido (concatenados) de todos los
empleados de la tabla "empleados" que
ingresaron a la empresa hace más de 10 años
11- Ejecute el procedimiento creado
anteriormente
12- Verifique que la tabla
"empleados_antiguos" ahora tiene registros (3
registros)
PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)
 Los procedimientos almacenados pueden recibir y devolver información; para ello se emplean
parámetros.
 Veamos los primeros. Los parámetros de entrada posibilitan pasar información a un
procedimiento. Para que un procedimiento almacenado admita parámetros de entrada se
deben declarar al crearlo. La sintaxis es:
create or replace procedure NOMBREPROCEDIMIENTO (PARAMETRO in TIPODEDATO)
as
begin
INSTRUCCIONES;
end;
 Los parámetros se definen luego del nombre del procedimiento. Pueden declararse varios
parámetros por procedimiento, se separan por comas.
 Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los
parámetros (en el orden que fueron definidos), a menos que se haya definido un valor por
defecto, en tal caso, pueden omitirse.
 Creamos un procedimiento que recibe el nombre de una editorial como parámetro y luego lo
utiliza para aumentar los precios de tal editorial:
create or replace procedure pa_libros_aumentar10(aeditorial in varchar2)
as
begin
update libros set precio=precio+(precio*0.1) where editorial=aeditorial;
end;
 El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del
procedimiento y un valor para el parámetro:
 execute pa_libros_aumentar10('Planeta');
 Luego de definir un parámetro y su tipo, opcionalmente, se puede especificar un valor por
defecto; tal valor es el que asume el procedimiento al ser ejecutado si no recibe parámetros.
Si no se coloca valor por defecto, un procedimiento definido con parámetros no puede
ejecutarse sin valores para ellos. El valor por defecto puede ser "null" o una constante
PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)
 Creamos otro procedimiento que recibe 2 parámetros, el nombre de una editorial y el valor de
incremento (que tiene por defecto el valor 10):
create or replace procedure pa_libros_aumentar(aeditorial in varchar2,aporcentaje in number default 10)
as
begin
update libros set precio=precio+(precio*aporcentaje/100) where editorial=aeditorial;
end;
 El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del
procedimiento y los valores para los parámetros separados por comas:
 execute pa_libros_aumentar('Planeta',30);
 Podemos omitir el segundo parámetro al invocar el procedimiento porque tiene establecido un
valor por defecto:
 execute pa_libros_aumentar('Planeta');
 En caso que un procedimiento tenga definidos varios parámetros con valores por defecto y al
invocarlo colocamos uno solo, Oracle asume que es el primero de ellos. si son de tipos de datos
diferentes, Oracle los convierte. Por ejemplo, definimos un procedimiento almacenado de la
siguiente manera:
create or replace procedure pa_libros_insertar (atitulo in varchar2 default null, aautor in varchar2 default
'desconocido', aeditorial in varchar2 default 'sin especificar', aprecio in number default 0) as
begin
insert into libros values (atitulo,aautor,aeditorial,aprecio);
end;
 Si luego llamamos al procedimiento enviándoles solamente el primer y cuarto parámetro
correspondientes al título y precio:
 execute pa_libros_insertar('Uno',100);
 Oracle asume que los argumentos son el primero y segundo, el registro que se almacenará será:
 Uno,100,sin especificar,0;
PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla y la creamos nuevamente:
drop table libros;
create table libros(
titulo varchar2(40),
autor varchar2(30),
editorial varchar2(20),
precio number(5,2) );
Ingresamos algunos registros:
insert into libros values ('Uno','Richard Bach','Planeta',15);
insert into libros values ('Ilusiones','Richard
Bach','Planeta',12);
insert into libros values ('El aleph','Borges','Emece',25);
insert into libros values ('Aprenda PHP','Mario
Molina','Nuevo siglo',50);
insert into libros values ('Matematica estas
ahi','Paenza','Nuevo siglo',18);
insert into libros values ('Puente al infinito','Bach
Richard','Sudamericana',14);
insert into libros values ('Antología','J. L.
Borges','Paidos',24);
insert into libros values ('Java en 10 minutos','Mario
Molina','Siglo XXI',45);
insert into libros values ('Cervantes y el quijote','Borges-
Casares','Planeta',34);
Creamos un procedimiento que recibe el nombre de una
editorial y luego aumenta en un 10% los precios de los
libros de tal editorial:
create or replace procedure
pa_libros_aumentar10(aeditorial in varchar2)
as
begin
update libros set precio=precio+(precio*0.1) where
editorial=aeditorial;
end;
Ejecutamos el procedimiento:
execute pa_libros_aumentar10('Planeta');
Verificamos que los precios de los libros de la editorial
"Planeta" han aumentado un 10%:
select *from libros;
Creamos otro procedimiento que recibe 2 parámetros,
el nombre de una editorial y el valor de incremento (que
tiene por defecto el valor 10):
create or replace procedure
pa_libros_aumentar(aeditorial in varchar2,aporcentaje in
number default 10) as begin update libros set
precio=precio+(precio*aporcentaje/100) where
editorial=aeditorial; end;
Ejecutamos el procedimiento enviando valores para
ambos argumentos:
execute pa_libros_aumentar('Planeta',30);
Consultamos la tabla "libros" para verificar que los
precios de los libros de la editorial "Planeta" han sido
aumentados en un 30%:
select *from libros;
 Ejecutamos el procedimiento "pa_libros_aumentar" omitiendo el segundo parámetro porque
tiene establecido un valor por defecto:
 execute pa_libros_aumentar('Paidos');
 Consultamos la tabla "libros" para verificar que los precios de los libros de la editorial "Paidos"
han sido aumentados en un 10% (valor por defecto):
 select *from libros;
 Definimos un procedimiento almacenado que ingrese un nuevo libro en la tabla "libros":
 create or replace procedure pa_libros_insertar (atitulo in varchar2 default null, aautor in varchar2
default 'desconocido', aeditorial in varchar2 default 'sin especificar', aprecio in number default 0)
as begin insert into libros values (atitulo,aautor,aeditorial,aprecio); end;
 Llamamos al procedimiento sin enviarle valores para los parámetros:
 execute pa_libros_insertar;
 Veamos cómo se almacenó el registro:
 select *from libros;
 Llamamos al procedimiento enviándole valores solamente para el primer y cuarto parámetros
correspondientes al título y precio:
 execute pa_libros_insertar('Uno',100);
 Oracle asume que los argumentos son el primero y segundo, vea cómo se almacenó el nuevo
registro:
 select *from libros;
PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)
Una empresa almacena los datos de sus
empleados en una tabla llamada "empleados".
1- Eliminamos la tabla y la creamos:
drop table empleados;
create table empleados(
documento char(8),
nombre varchar2(20),
apellido varchar2(20),
sueldo number(6,2),
fechaingreso date );
2- Ingrese algunos registros:
insert into empleados
values('22222222','Juan','Perez',300,'10/10
/1980');
insert into empleados
values('22333333','Luis','Lopez',300,'12/05/
1998');
insert into empleados
values('22444444','Marta','Perez',500,'25/0
8/1990');
insert into empleados
values('22555555','Susana','Garcia',400,'05
/05/2000');
insert into empleados
values('22666666','Jose
Maria','Morales',400,'24/10/2005');
3- Cree un procedimiento almacenado llamado
"pa_empleados_aumentarsueldo". Debe
incrementar el sueldo de los empleados con
cierta cantidad de años en la empresa
(parámetro "ayear" de tipo numérico) en un
porcentaje (parámetro "aporcentaje" de tipo
numerico); es decir, recibe 2 parámetros.
4- Ejecute el procedimiento creado
5- Verifique que los sueldos de los empleados con más de 10 años
en la empresa han aumentado un 20%
6- Ejecute el procedimiento creado anteriormente enviando otros
valores como parámetros (por ejemplo, 8 y 10)
7- Verifique que los sueldos de los empleados con más de 8 años
en la empresa han aumentado un 10%
8- Ejecute el procedimiento almacenado
"pa_empleados_aumentarsueldo" sin parámetros
9- Cree un procedimiento almacenado llamado
"pa_empleados_ingresar" que ingrese un empleado en la tabla
"empleados", debe recibir valor para el documento, el nombre,
apellido y almacenar valores nulos en los campos "sueldo" y
"fechaingreso"
10- Ejecute el procedimiento creado anteriormente y verifique si
se ha ingresado en "empleados" un nuevo registro
11- Reemplace el procedimiento almacenado llamado
"pa_empleados_ingresar" para que ingrese un empleado en la
tabla "empleados", debe recibir valor para el documento (con
valor por defecto nulo) y fechaingreso (con la fecha actual como
valor por defecto), los demás campos se llenan con valor nulo
12- Ejecute el procedimiento creado anteriormente enviándole
valores para los 2 parámetros y verifique si se ha ingresado en
"empleados" un nuevo registro
13- Ejecute el procedimiento creado anteriormente enviando
solamente la fecha de ingreso y vea el resultado
Oracle toma el valor enviado como primer argumento e intenta
ingresarlo en el campo "documento", muestra un mensaje de
error indicando que el valor es muy grande, ya que tal campo
admite 8 caracteres.
14- Cree (o reemplace) un procedimiento almacenado que reciba
un documento y elimine de la tabla "empleados" el empleado que
coincida con dicho documento
15- Elimine un empleado empleando el procedimiento del punto
anterior
16- Verifique la eliminación
PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)

Más contenido relacionado

La actualidad más candente

Hilos En Java
Hilos En JavaHilos En Java
Diferencias swing y awt
Diferencias swing y awtDiferencias swing y awt
Diferencias swing y awt
Juan David Franco
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
Giancarlo Aguilar
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
Leinylson Fontinele
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
Byron Eras
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
Mario Sergio
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
jose_rob
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
thalia margarita serrano diaz
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en Haskell
José A. Alonso
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
Eudris Cabrera
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
Lisbeth Ocaña Bueno
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
Mahuan Capeletto Abdala
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
Cleber Ramos
 
Crear base de datos mysql command
Crear base de datos mysql commandCrear base de datos mysql command
Crear base de datos mysql command
Louis Jhosimar
 
Xampp
XamppXampp
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
Vicente Alberca
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
Lisbeth Ocaña Bueno
 
Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos Relacional
Gema López
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
José Antonio Sandoval Acosta
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
innovalabcun
 

La actualidad más candente (20)

Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Diferencias swing y awt
Diferencias swing y awtDiferencias swing y awt
Diferencias swing y awt
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en Haskell
 
[ES] Control de versiones con subversion
[ES] Control de versiones con  subversion[ES] Control de versiones con  subversion
[ES] Control de versiones con subversion
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Crear base de datos mysql command
Crear base de datos mysql commandCrear base de datos mysql command
Crear base de datos mysql command
 
Xampp
XamppXampp
Xampp
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
 
Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos Relacional
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
 

Similar a Procedimientos Almacenados

PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosPROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
JuanMiguelCustodioMo
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
Luis Jherry
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
Angelica Garcia Garcia
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
Luis Jherry
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
Corfapo
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenados
hirmaroxana13
 
Disparadores
DisparadoresDisparadores
Disparadores
Adriana Becerra
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
Adriana Becerra
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
Harold Perez
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
guesta403644
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
Rafa
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
guesta403644
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
Andres Ortega
 
Resulset
ResulsetResulset
Pa
PaPa
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2
Wally IG
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Juan Manuel
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
Mariana-Rmz
 
12 Guía_Fundamentos de Base de Datos.docx
12 Guía_Fundamentos de Base de Datos.docx12 Guía_Fundamentos de Base de Datos.docx
12 Guía_Fundamentos de Base de Datos.docx
LeydyVeronicaDelgado
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
Miguel Angel Rivera Robledo
 

Similar a Procedimientos Almacenados (20)

PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosPROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenados
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
 
Resulset
ResulsetResulset
Resulset
 
Pa
PaPa
Pa
 
Temas programacion java_2
Temas programacion java_2Temas programacion java_2
Temas programacion java_2
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
12 Guía_Fundamentos de Base de Datos.docx
12 Guía_Fundamentos de Base de Datos.docx12 Guía_Fundamentos de Base de Datos.docx
12 Guía_Fundamentos de Base de Datos.docx
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 

Último

EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
Victor Elizalde P
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
JonathanCovena1
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
acgtz913
 
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdfEl Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
Robert Zuñiga Vargas
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
josseanlo1581
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
JAVIER SOLIS NOYOLA
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
Mónica Sánchez
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Demetrio Ccesa Rayme
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
gamcoaquera
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
https://gramadal.wordpress.com/
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI UNESCO Ccesa007.pdf
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI  UNESCO Ccesa007.pdfLas Tecnologias Digitales en los Aprendizajesdel Siglo XXI  UNESCO Ccesa007.pdf
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI UNESCO Ccesa007.pdf
Demetrio Ccesa Rayme
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
20minutos
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
LuanaJaime1
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
DavidCamiloMosquera
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
shirherrer
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Juan Martín Martín
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
GiselaBerrios3
 
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
Unidad de Espiritualidad Eudista
 

Último (20)

EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
 
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdfEl Cerebro se Cambia a si Mismo-Norman Doidge.pdf
El Cerebro se Cambia a si Mismo-Norman Doidge.pdf
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI UNESCO Ccesa007.pdf
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI  UNESCO Ccesa007.pdfLas Tecnologias Digitales en los Aprendizajesdel Siglo XXI  UNESCO Ccesa007.pdf
Las Tecnologias Digitales en los Aprendizajesdel Siglo XXI UNESCO Ccesa007.pdf
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
 
Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......Clase Prensencial, Actividad 2.pdf.......
Clase Prensencial, Actividad 2.pdf.......
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
 
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
Triduo Eudista: Jesucristo, Sumo y Eterno Sacerdote; El Corazón de Jesús y el...
 

Procedimientos Almacenados

  • 1. UD – Planificación y gestión del desarrollo de software Actividad 3: Procedimientos almacenados
  • 2. Actividad 2: Procedimientos almacenados 1. Creación de procedimientos 2. Declaración de procedimientos
  • 3. Procedimientos almacenados  Un procedimiento almacenado es un conjunto de instrucciones a las que se les da un nombre, se almacena en la base de datos activa. Permiten agrupar y organizar tareas repetitivas.  Ventajas:  - comparten la lógica de la aplicación con las otras aplicaciones, con lo cual el acceso y las modificaciones de los datos se hacen en un solo sitio.  - permiten realizar todas las operaciones que los usuarios necesitan evitando que tengan acceso directo a las tablas.  - reducen el tráfico de red; en vez de enviar muchas instrucciones, los usuarios realizan operaciones enviando una única instrucción, lo cual disminuye el número de solicitudes entre el cliente y el servidor.  Un procedimiento almacenados puede hacer referencia a objetos que no existen al momento de crearlo. Los objetos deben existir cuando se ejecute el procedimiento almacenado.
  • 4. Procedimientos Almacenados (crear- ejecutar) • Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar si son correctas sintácticamente. Si se encuentra algún error, el procedimiento se compila, pero aparece un mensaje "con advertencias" que indica tal situación. • Un procedimiento almacenado se invoca llamándolo. • En primer lugar se deben tipear y probar las instrucciones que se incluyen en el procedimiento almacenado, luego, si se obtiene el resultado esperado, se crea el procedimiento. • Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario, a otros procedimientos almacenados. • Un procedimiento almacenado pueden incluir cualquier cantidad y tipo de instrucciones DML (de manipulación de datos, como insert, update, delete), no instrucciones DDL (de definición de datos, como create..., drop... alter...). • Para crear un procedimiento almacenado empleamos la instrucción "create procedure". La sintaxis básica parcial es: • create or replace procedure NOMBREPROCEDIMIENTO • As • begin • INSTRUCCIONES • end;
  • 5. Procedimientos Almacenados (crear- ejecutar) • El bloque de instrucciones comienza luego de "begin" y acaba con "end". • Si empleamos "or replace", se sobreescribe (se reemplaza) un procedimiento existente; si se omite y existe un procedimiento con el nombre que le asignamos, Oracle mostrará un mensaje de error indicando tal situación. • Para diferenciar los procedimientos almacenados del sistema de los procedimientos almacenados creados por el usuario use un prefijo, por ejemplo "pa_" cuando les de el nombre. • Con las siguientes instrucciones creamos un procedimiento almacenado llamado "pa_libros_aumentar10" que incrementa en un 10% el precio de todos los libros: create procedure pa_libros_aumentar10 as update libros set precio=precio+precio*0.1; • Entonces, creamos un procedimiento almacenado colocando "create procedure" (o "create or replace", si es que desea reemplazar el existente), luego el nombre del procedimiento y seguido de "as" las sentencias que definen el procedimiento. • Para ejecutar el procedimiento almacenado creado anteriormente tipeamos: • execute pa_libros_aumentar10; • Entonces, para ejecutar un procedimiento almacenado colocamos "execute" seguido del nombre del procedimiento.
  • 6. 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
  • 7. PRIMER PROBLEMA Una empresa almacena los datos de sus empleados en una tabla llamada "empleados". 1- Eliminamos la tabla y la creamos: drop table empleados; create table empleados( documento char(8), nombre varchar2(20), apellido varchar2(20), sueldo number(6,2), cantidadhijos number(2,0), fechaingreso date, primary key(documento) ); 2- Ingrese algunos registros: insert into empleados values('22222222','Juan','Perez',200,2,'10/ 10/1980'); insert into empleados values('22333333','Luis','Lopez',250,0,'01/ 02/1990'); insert into empleados values('22444444','Marta','Perez',350,1,'02 /05/1995'); insert into empleados values('22555555','Susana','Garcia',400,2,' 15/12/2000'); insert into empleados values('22666666','Jose Maria','Morales',500,3,'25/08/2005'); 3- Cree (o reemplace) el procedimiento almacenado llamado "pa_aumentarsueldo" que aumente los sueldos inferiores al promedio en un 20% 4- Ejecute el procedimiento creado anteriormente 5- Verifique que los sueldos han aumentado 6- Ejecute el procedimiento nuevamente 7- Verifique que los sueldos han aumentado 8- Elimine la tabla "empleados_antiguos" 9- Cree la tabla "empleados_antiguos" create table empleados_antiguos( documento char(8), nombre varchar2(40) ); 10- Cree (o reemplace) un procedimiento almacenado que ingrese en la tabla "empleados_antiguos" el documento, nombre y apellido (concatenados) de todos los empleados de la tabla "empleados" que ingresaron a la empresa hace más de 10 años 11- Ejecute el procedimiento creado anteriormente 12- Verifique que la tabla "empleados_antiguos" ahora tiene registros (3 registros)
  • 8. PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)  Los procedimientos almacenados pueden recibir y devolver información; para ello se emplean parámetros.  Veamos los primeros. Los parámetros de entrada posibilitan pasar información a un procedimiento. Para que un procedimiento almacenado admita parámetros de entrada se deben declarar al crearlo. La sintaxis es: create or replace procedure NOMBREPROCEDIMIENTO (PARAMETRO in TIPODEDATO) as begin INSTRUCCIONES; end;  Los parámetros se definen luego del nombre del procedimiento. Pueden declararse varios parámetros por procedimiento, se separan por comas.  Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los parámetros (en el orden que fueron definidos), a menos que se haya definido un valor por defecto, en tal caso, pueden omitirse.  Creamos un procedimiento que recibe el nombre de una editorial como parámetro y luego lo utiliza para aumentar los precios de tal editorial: create or replace procedure pa_libros_aumentar10(aeditorial in varchar2) as begin update libros set precio=precio+(precio*0.1) where editorial=aeditorial; end;  El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y un valor para el parámetro:  execute pa_libros_aumentar10('Planeta');  Luego de definir un parámetro y su tipo, opcionalmente, se puede especificar un valor por defecto; tal valor es el que asume el procedimiento al ser ejecutado si no recibe parámetros. Si no se coloca valor por defecto, un procedimiento definido con parámetros no puede ejecutarse sin valores para ellos. El valor por defecto puede ser "null" o una constante
  • 9. PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)  Creamos otro procedimiento que recibe 2 parámetros, el nombre de una editorial y el valor de incremento (que tiene por defecto el valor 10): create or replace procedure pa_libros_aumentar(aeditorial in varchar2,aporcentaje in number default 10) as begin update libros set precio=precio+(precio*aporcentaje/100) where editorial=aeditorial; end;  El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y los valores para los parámetros separados por comas:  execute pa_libros_aumentar('Planeta',30);  Podemos omitir el segundo parámetro al invocar el procedimiento porque tiene establecido un valor por defecto:  execute pa_libros_aumentar('Planeta');  En caso que un procedimiento tenga definidos varios parámetros con valores por defecto y al invocarlo colocamos uno solo, Oracle asume que es el primero de ellos. si son de tipos de datos diferentes, Oracle los convierte. Por ejemplo, definimos un procedimiento almacenado de la siguiente manera: create or replace procedure pa_libros_insertar (atitulo in varchar2 default null, aautor in varchar2 default 'desconocido', aeditorial in varchar2 default 'sin especificar', aprecio in number default 0) as begin insert into libros values (atitulo,aautor,aeditorial,aprecio); end;  Si luego llamamos al procedimiento enviándoles solamente el primer y cuarto parámetro correspondientes al título y precio:  execute pa_libros_insertar('Uno',100);  Oracle asume que los argumentos son el primero y segundo, el registro que se almacenará será:  Uno,100,sin especificar,0;
  • 10. PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA) Trabajamos con la tabla "libros" de una librería. Eliminamos la tabla y la creamos nuevamente: drop table libros; create table libros( titulo varchar2(40), autor varchar2(30), editorial varchar2(20), precio number(5,2) ); Ingresamos algunos registros: insert into libros values ('Uno','Richard Bach','Planeta',15); insert into libros values ('Ilusiones','Richard Bach','Planeta',12); insert into libros values ('El aleph','Borges','Emece',25); insert into libros values ('Aprenda PHP','Mario Molina','Nuevo siglo',50); insert into libros values ('Matematica estas ahi','Paenza','Nuevo siglo',18); insert into libros values ('Puente al infinito','Bach Richard','Sudamericana',14); insert into libros values ('Antología','J. L. Borges','Paidos',24); insert into libros values ('Java en 10 minutos','Mario Molina','Siglo XXI',45); insert into libros values ('Cervantes y el quijote','Borges- Casares','Planeta',34); Creamos un procedimiento que recibe el nombre de una editorial y luego aumenta en un 10% los precios de los libros de tal editorial: create or replace procedure pa_libros_aumentar10(aeditorial in varchar2) as begin update libros set precio=precio+(precio*0.1) where editorial=aeditorial; end; Ejecutamos el procedimiento: execute pa_libros_aumentar10('Planeta'); Verificamos que los precios de los libros de la editorial "Planeta" han aumentado un 10%: select *from libros; Creamos otro procedimiento que recibe 2 parámetros, el nombre de una editorial y el valor de incremento (que tiene por defecto el valor 10): create or replace procedure pa_libros_aumentar(aeditorial in varchar2,aporcentaje in number default 10) as begin update libros set precio=precio+(precio*aporcentaje/100) where editorial=aeditorial; end; Ejecutamos el procedimiento enviando valores para ambos argumentos: execute pa_libros_aumentar('Planeta',30); Consultamos la tabla "libros" para verificar que los precios de los libros de la editorial "Planeta" han sido aumentados en un 30%: select *from libros;
  • 11.  Ejecutamos el procedimiento "pa_libros_aumentar" omitiendo el segundo parámetro porque tiene establecido un valor por defecto:  execute pa_libros_aumentar('Paidos');  Consultamos la tabla "libros" para verificar que los precios de los libros de la editorial "Paidos" han sido aumentados en un 10% (valor por defecto):  select *from libros;  Definimos un procedimiento almacenado que ingrese un nuevo libro en la tabla "libros":  create or replace procedure pa_libros_insertar (atitulo in varchar2 default null, aautor in varchar2 default 'desconocido', aeditorial in varchar2 default 'sin especificar', aprecio in number default 0) as begin insert into libros values (atitulo,aautor,aeditorial,aprecio); end;  Llamamos al procedimiento sin enviarle valores para los parámetros:  execute pa_libros_insertar;  Veamos cómo se almacenó el registro:  select *from libros;  Llamamos al procedimiento enviándole valores solamente para el primer y cuarto parámetros correspondientes al título y precio:  execute pa_libros_insertar('Uno',100);  Oracle asume que los argumentos son el primero y segundo, vea cómo se almacenó el nuevo registro:  select *from libros; PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)
  • 12. Una empresa almacena los datos de sus empleados en una tabla llamada "empleados". 1- Eliminamos la tabla y la creamos: drop table empleados; create table empleados( documento char(8), nombre varchar2(20), apellido varchar2(20), sueldo number(6,2), fechaingreso date ); 2- Ingrese algunos registros: insert into empleados values('22222222','Juan','Perez',300,'10/10 /1980'); insert into empleados values('22333333','Luis','Lopez',300,'12/05/ 1998'); insert into empleados values('22444444','Marta','Perez',500,'25/0 8/1990'); insert into empleados values('22555555','Susana','Garcia',400,'05 /05/2000'); insert into empleados values('22666666','Jose Maria','Morales',400,'24/10/2005'); 3- Cree un procedimiento almacenado llamado "pa_empleados_aumentarsueldo". Debe incrementar el sueldo de los empleados con cierta cantidad de años en la empresa (parámetro "ayear" de tipo numérico) en un porcentaje (parámetro "aporcentaje" de tipo numerico); es decir, recibe 2 parámetros. 4- Ejecute el procedimiento creado 5- Verifique que los sueldos de los empleados con más de 10 años en la empresa han aumentado un 20% 6- Ejecute el procedimiento creado anteriormente enviando otros valores como parámetros (por ejemplo, 8 y 10) 7- Verifique que los sueldos de los empleados con más de 8 años en la empresa han aumentado un 10% 8- Ejecute el procedimiento almacenado "pa_empleados_aumentarsueldo" sin parámetros 9- Cree un procedimiento almacenado llamado "pa_empleados_ingresar" que ingrese un empleado en la tabla "empleados", debe recibir valor para el documento, el nombre, apellido y almacenar valores nulos en los campos "sueldo" y "fechaingreso" 10- Ejecute el procedimiento creado anteriormente y verifique si se ha ingresado en "empleados" un nuevo registro 11- Reemplace el procedimiento almacenado llamado "pa_empleados_ingresar" para que ingrese un empleado en la tabla "empleados", debe recibir valor para el documento (con valor por defecto nulo) y fechaingreso (con la fecha actual como valor por defecto), los demás campos se llenan con valor nulo 12- Ejecute el procedimiento creado anteriormente enviándole valores para los 2 parámetros y verifique si se ha ingresado en "empleados" un nuevo registro 13- Ejecute el procedimiento creado anteriormente enviando solamente la fecha de ingreso y vea el resultado Oracle toma el valor enviado como primer argumento e intenta ingresarlo en el campo "documento", muestra un mensaje de error indicando que el valor es muy grande, ya que tal campo admite 8 caracteres. 14- Cree (o reemplace) un procedimiento almacenado que reciba un documento y elimine de la tabla "empleados" el empleado que coincida con dicho documento 15- Elimine un empleado empleando el procedimiento del punto anterior 16- Verifique la eliminación PROCEDIMIENTOS ALMACENADOS (PARÁMETROS DE ENTRADA)