Está en la página 1de 10

GESTIÓN DE BASE DE

DATOS
PROCEDIMIENTOS EN ORACLE
Ing. Ricardo Albarracin, MSc
PROCEDIMIENTOS

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 almacenado puede hacer referencia a objetos que no
existen al momento de crearlo. Los objetos deben existir cuando se ejecute
el procedimiento almacenado.
PROCEDIMIENTOS

Características
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 escribir y probar las
instrucciones que se incluyen en el procedimiento
almacenado, luego, si se obtiene el resultado esperado,
se crea el procedimiento.
PROCEDIMIENTOS
Los procedimientos almacenados pueden hacer
referencia a tablas, vistas, a funciones definidas por el
usuario, a otros procedimientos almacenados.
Un procedimiento almacenado puede 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...).
PROCEDIMIENTOS
Para crear un procedimiento almacenado se emplea la
instrucción "create procedure".
La sintaxis básica es:
create or replace procedure NOMBREPROCEDIMIENTO
as
begin
INSTRUCCIONES
end;
El bloque de instrucciones comienza luego de "begin" y
acaba con "end".
PROCEDIMIENTOS
 Crear un procedimiento almacenado que incremente en un 10% el
precio de todos los productos:
create or replace procedure sp_productos
as
begin
update productos set precio = precio + precio * 0.1;
end;
 Entonces, se crea 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 se ejecuta:
execute sp_productos;
PROCEDIMIENTOS
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;
PROCEDIMIENTOS
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 especificarse 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.
Crear un procedimiento que recibe el código del fabricante de un
producto como parámetro y luego lo utiliza para aumentar los precios de
tales productos:

create or replace procedure sp_productos_parametros(fab in varchar2)


as
begin
Update PRODUCTOS set precio = precio + (precio * 0.1)
where id_fab = fab;
end;
PROCEDIMIENTOS
Crear otro procedimiento que reciba 2 parámetros, el código del
fabricante y el valor de incremento (que tiene por defecto el valor
10):
create or replace procedure sp_productos_dos_parametros(fab in
varchar2,porcentaje in number default 10)
as
begin
Update productos set precio = precio + (precio * porcentaje/100)
where id_fab = fab;
end;
execute sp_productos_dos_parametros(‘ACI',30);
Se puede omitir el segundo parámetro al invocar el procedimiento
porque tiene establecido un valor por defecto:
execute sp_productos_dos_parametros(‘ACI');
PROCEDIMIENTOS
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”.

También podría gustarte