Sie sind auf Seite 1von 5

PROCEDIMIENTOS ALMACENADOS ORACLE Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que

se le haya asignado. La sintaxis para crear un procedimiento es la siguiente: CREATE [OR REPLACE] PROCEDURE name [(param [INOUTIN OUT] datatype) . . .][ISAS] pl/sql_subprogram El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento ya existe, se producir un error. Los modificadores IN, OUT, IN OUT indican si el parametro es de entrada, salida o ambos. A continuacin se presenta un ejemplo de creacin de un procedimiento en Oracle: SQL> CREATE PROCEDURE credit (acc_no IN NUMBER, amount IN NUMBER)1> AS BEGIN2> UPDATE accounts3> SET balance = balance + amount4> WHERE account_id = acc_no;5> END; EJEMPLO 1.- Creacion de la tabla alumnos create table ALUMNOS( Numero_De_Control integer not null, Nombre varchar (30) not null, Cal_Primer_Parcial integer not null, Cal_Segundo_Parcial integer not null, Cal_Tercer_Parcial integer not null, Promedio integer not null, primary key (Numero_De_Control));

Insertamos registros a la tabla ALUMNOS insert insert insert insert insert insert insert INTO INTO INTO INTO INTO INTO INTO ALUMNOS ALUMNOS ALUMNOS ALUMNOS ALUMNOS ALUMNOS ALUMNOS values('05120077', values('05120078', values('05120079', values('05120080', values('05120081', values('05120082', values('05120082', 'Salvador','90','90','90','90') 'Angeles','90','100','90','93.3') 'Paty','80','100','90','90') 'Ival','85','95','100','95') 'Jose','90','100','95','94.3') 'Monse','90','100','90','93.3') 'Monica','95','100','90','93.3')

select * from ALUMNOS

2.- Procedimiento almacenado de la tabla alumnos en Oracle. CREATE PROCEDURE AlumnopruebA(emp_id IN NUMBER)

AS -- declare variables to hold values from table columns, use %TYPE attribute emp_comm alumnos.nombre%TYPE; BEGIN -- executable part starts here -- select the column values into the local variables SELECT Nombre INTO emp_comm FROM alumnos WHERE Numero_De_Control =emp_id; DBMS_OUTPUT.PUT_LINE(emp_comm ); END AlumnopruebA; /

3.-Mostrar el procedimiento almacenado de la tabla alumnos en oracle. BEGIN AlumnopruebA(05120079); END; /

4.- Borrar procedimiento almacenado de la tabla alumnos en oracle. DROP PROCEDURE AlumnopruebA;

Problema: Trabajamos con la tabla "libros" de una librera. 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 ('Antologa','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','BorgesCasares','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 parmetros, 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 parmetro 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 parmetros: execute pa_libros_insertar; Veamos cmo se almacen el registro:

select *from libros; Llamamos al procedimiento envindole valores solamente para el primer y cuarto parmetros correspondientes al ttulo y precio: execute pa_libros_insertar('Uno',100); Oracle asume que los argumentos son el primero y segundo, vea cmo se almacen el nuevo registro: select *from libros;

Das könnte Ihnen auch gefallen