Sei sulla pagina 1di 10

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

FACULTAD DE ING. MINAS, GELOGIA Y CIVIL


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

I. OBJETIVOS
Entender el concepto de programacin con PL/SQL.
Crear e invocar procedimientos almacenados en una base de datos
Oracle.
Utilizar los procedimientos almacenados para facilitar consultas en
SQL Developer

II. MARCO TERICO

Programacin con PL/SQL

Introduccin

SQL es un lenguaje de consulta para los sistemas de bases de datos


relacinales, pero que no posee la potencia de los lenguajes de
programacin. No permite el uso de variables, estructuras de control de
flujo, bucles, etc. y dems elementos caractersticos de la programacin. No
es de extraar, SQL es un lenguaje de consulta, no un lenguaje de
programacin.

PL/SQL es el lenguaje de programacin que proporciona Oracle para


extender el SQL estndar con otro tipo de instrucciones y elementos propios
de los lenguajes de programacin.

Es el lenguaje de programacin de 4ta generacin para base de datos


Oracle.

Bloques PL/SQL
Un programa de PL/SQL est compuesto por bloques. Un programa est
compuesto como mnimo de un bloque.

Los bloques de PL/SQL pueden ser de los siguientes tipos:

Lab. Administracin de Base de Datos 1 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Bloques annimos
Subprogramas

Un cdigo annimo es bsicamente aquel que el cdigo fuente reside en el


lado cliente y un subprograma reside el cdigo fuente en el servidor.

Con PL/SQL vamos a poder programar Los Subprogramas de la base de


datos ORACLE, estn son:
Procedimientos almacenados
Funciones
Triggers
Paquetes

Estructura de un Bloque

Los bloques PL/SQL presentan una estructura especfica compuesta de tres


partes bien diferenciadas:

La seccin declarativa en donde se declaran todas las constantes y


variables que se van a utilizar en la ejecucin del bloque.
La seccin de ejecucin que incluye las instrucciones a ejecutar en el
bloque PL/SQL.
La seccin de excepciones en donde se definen los manejadores de
errores que soportar el bloque PL/SQL.

Lab. Administracin de Base de Datos 2 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado es un bloque de instrucciones SQL con
un nombre determinado.

Un procedimiento almacenado es un procedimiento cuyo cdigo se


guarda en la base de datos y tiene como objeto realizar una accin
especfica.

PL/SQL proporciona un lenguaje sofisticado para construir


procedimientos, se comportan igualmente, como los procedimientos en
otros lenguajes de tercera generacin, compartiendo muchas de sus
propiedades.

III. DESARROLLO
CREAR UN PROCEDIMIENTO ALMACENADO EN UNA BASE DE
DATOS ORACLE

La sintaxis para crear un procedimiento almacenado depende si van a


recibir o no parmetros:

CREAR PROCEDIMIENTOS ALMACENADO SIN PARMETROS

CREATE PROCEDURE Nombre_procedimiento


AS/IS
BEGIN
Instrucciones SQL;
END;

Si el nombre del procedimiento almacenado que desea crear ya existe,


se visualiza el siguiente mensaje de error.

Para evitar este tipo de errores puede crear el procedimiento


almacenado con la siguiente sintaxis

CREATE [OR REPLACE] PROCEDURE Nombre_procedimiento


IS/AS <DEFINICION_VARIABLES>
BEGIN
Instrucciones SQL; <CODIGO_PLSQL>
END;

EJECUTAR PROCEDIMIENTOS ALMACENADO SIN PARMETROS


BEGIN
Nombre_procedimiento_almacenado();
END;

ENTRADA Y SALIDA DE DATOS


Para mostrar un valor por pantalla:
Lab. Administracin de Base de Datos 3 Prof. Elvira Fernndez
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

DBMS_OUTPUT.PUT_LINE(cadena);
DBMS_OUTPUT es un depurador de Oracle que sirve para visualizar cualquier cosa, pero
antes lo debemos tener activado (en SQL*plus, se activa con el comando SET
SERVEROUTPUT ON):

EJEMPLO 01.- Cree un procedimiento almacenado que permita


mostrar los datos generales del empleado y el salario que percibe, cuyo
cdigo es 198 de la tabla empleados.

EJECUTANDO EL RESULTADO:
BEGIN
BUSCAR_EMPLEADOS();
END;

%type
Este atributo se utiliza para definir las variables del mismo tipo que
est definido el campo de una tabla teniendo como ventaja que si se

Lab. Administracin de Base de Datos 4 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

cambia el tipo del campo, se cambia en forma automtica el tipo de la


variable.

Sintaxis
Variable tabla.Campo% Type

El cdigo de un procedimiento se puede verificar en la vista


ALL_SOURCE.
EJEMPLO:
SQL> Select text from all_source where name = BUSCAR_EMPLEADOS;

Entonces la vista ALL_SOURCE tiene 5 campos:


CAMPOS DESCRIPCION
OWNER Propietario de la funcin o procedimiento.
TYPE Los diferentes tipos de subprogramas. Realmente,
aparte de funciones y procedimientos, se puede
observar el cdigo de los diferentes tipos: PACKAGE,
PACKAGE BODY, PROCEDURE, TYPE, TYPE BODY
LINE Nmero de la lnea del cdigo
TEXT contenido de cdigo que est en la presente lnea

CREAR PROCEDIMIENTOS ALMACENADO CON PARMETROS


CREATE [OR REPLACE]
PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END [<procedure_name>];

La clusula opcional OR REPLACE permite sobrescribir un


procedimiento existente. Si se omite y el procedimiento ya existe se
producir un error.

Argumento es el nombre de un parmetro del procedimiento. Los


parmetros vlidos incluyen todos los tipos de datos. Sin embargo, para
los tipos CHAR,VARCHAR2 Y NUMBER no deben de especificar
longitud ni escala. Por ejemplo, el parmetro NUMBER(6) da un error de
compilacin y debe ser reemplazado por NUMBER.

Lab. Administracin de Base de Datos 5 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Las clusulas IN, OUT, y IN OUT especifican el modo en que es utilizado


el parmetro. Por defecto, los parmetros son de modo IN. IN significa
que el parmetro puede estar referenciado dentro del cuerpo del
procedimiento, pero no puede ser cambiado. OUT significa que al
parmetro se le puede asignar un valor, pero el valor del parmetro no
puede ser referenciado. IN OUT permite ambas cosas, asignar valores a
los parmetros y referenciarlos. Normalmente basta con usar el modo
por defecto (IN).

ELIMINAR PROCEDIMIENTO

Un procedimiento puede ser borrado respectivamente con los comandos

DROP PROCEDURE <nombre de procedimiento>

Ejemplo 02:
Del ejemplo anterior BUSCAR_EMPLEADOS, modificar y crear un
procedimiento almacenado con parmetro, es decir que muestre el
empleado segn su cdigo especificado.

ACCESO A UN BASE DE DATOS


El acceso a la informacin de una base de datos mediante instrucciones
PL/SQL se realiza mediante cursores.

Un cursor es una zona de memoria que se reserva para procesar los


resultados de una consulta select.

La informacin en un cursor se devuelve y maneja como un conjunto de


registros.

Existen dos tipos de cursores:

Lab. Administracin de Base de Datos 6 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Cursores implcitos
Cursores explcitos

Cursores implcitos
Este tipo de cursor es generado y gestionado por el mismo Oracle y se utiliza
para operaciones Select into. Su caracterstica principal es que solo devuelve
un registro.

Cursores explcitos
Este tipo de cursor es generado y gestionado por el mismo programador y
puede devolver N registros.

La sintaxis para declarar un cursor es la siguiente:

Cursor nombre Is instruccin SQL

Leer todos los registros del cursor


Para leer todos los registros de un cursor debe crear un bucle utilizando la
instruccin For In.

LA INSTRUCCIN For In cumple con las siguientes funciones en un


cursor:

1. Declara una variable para manejar el cursor.


2. Abre el cursor
3. Lee todos los datos del cursor registro por registro.
4. Cierra el cursor

La sintaxis es la siguiente:

For Variable In Cursor Loop

End Loop;

Donde:
Variable
Es una variable que se declara en forma automtica de tipo cursor y almacena
los datos ledos del cursor para poder manejarlos dentro del bucle.

Cursor
Es el nombre del cursor declarado anteriormente.

Ejemplo03. Crear un procedimiento almacenado que permita mostrar los


datos de los empleados y su respectivo salario. Para ello utilizar cursores.

Lab. Administracin de Base de Datos 7 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejecutando el procedimiento almacenado.


begin
BUSCAR_EMPLEADOS();
end;

salida:

EJERCICIOS PROPUESTOS

Lab. Administracin de Base de Datos 8 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejercio01:
Crear un procedimiento almacenado en el esquema oe, que genere la
lista de productos de la tabla PRODUCT_INFORMATION. Mostrar el
cdigo_producto, nombre del producto, lista de precios y el minimo
precio, segn el cdigo del producto ingresad0 .

Salida

Esquema hr
Ejercicio 02 :
Crear un procedimiento almacenado que permita mostrar el directorio
de un empleado, es decir su nombre, apellidos en una sola fila, su
telefono y el nombre del departamento al que pertenece. Buscar al
empleado por codigo.

Salida:

Ejercicio 03:
Crear un procedimiento que permita agregar nuevas ocupaciones a la
tabla Jobs y luego mostrar los registros agregados.

Ejercicio 04:
Crear un procedimiento almacenado que permita actualizar los emails
de los empleados segn su codigo, con el domino corporativo ejemplo :
juan@unsch.edu.pe. Despus invocar tal procedimiento.

Ejercicio 05:
crear un procedimiento almacenado que permita borrar las
localizaciones, segn la ciudad indicada.
Lab. Administracin de Base de Datos 9 Prof. Elvira Fernndez
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejercicio 06:
Crear un procedimiento almacenado que permita aumentar los salarios
mximo y minimo en un porcentaje indicado, segn la ocupacin que
corresponda.

EJERCICIO 07:
Crear un procedimiento almacenado para mostrar los empleados con sus respectivas
ocupaciones , departamentos y salarios.

tarea para casa


Crear 3 procedimiento almacenados. 1 procedimeinto que reciba paremetros y 2
utilizando cursores(una sin parametros y otro que reciba parmetros) trabajar con el
esquema HR.

Lab. Administracin de Base de Datos 10 Prof. Elvira Fernndez


(IS-443)

Potrebbero piacerti anche