Está en la página 1de 10

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

FACULTAD DE ING. MINAS, GELOGIA Y CIVIL


ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERIA DE SISTEMAS

I. OBJETIVOS
 Entender el concepto de programación 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 TEÓRICO

Programación con PL/SQL

Introducción

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


relaciónales, pero que no posee la potencia de los lenguajes de
programación. No permite el uso de variables, estructuras de control de
flujo, bucles, etc. y demás elementos característicos de la programación. No
es de extrañar, SQL es un lenguaje de consulta, no un lenguaje de
programación.

PL/SQL es el lenguaje de programación que proporciona Oracle para


extender el SQL estándar con otro tipo de instrucciones y elementos propios
de los lenguajes de programación.

Es el lenguaje de programación de 4ta generación para base de datos


Oracle.

Bloques PL/SQL
Un programa de PL/SQL está compuesto por bloques. Un programa está
compuesto como mínimo de un bloque.

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

Lab. Administración de Base de Datos 1 Prof. Elvira Fernández


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

• Bloques anónimos
• Subprogramas

Un código anónimo es básicamente aquel que el código fuente reside en el


lado cliente y un subprograma reside el código fuente en el servidor.

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


datos ORACLE, están son:
 Procedimientos almacenados
 Funciones
 Triggers
 Paquetes

Estructura de un Bloque

Los bloques PL/SQL presentan una estructura específica compuesta de tres


partes bien diferenciadas:

• La sección declarativa en donde se declaran todas las constantes y


variables que se van a utilizar en la ejecución del bloque.
• La sección de ejecución que incluye las instrucciones a ejecutar en el
bloque PL/SQL.
• La sección de excepciones en donde se definen los manejadores de
errores que soportará el bloque PL/SQL.

Lab. Administración de Base de Datos 2 Prof. Elvira Fernández


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIÓN 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 código se


guarda en la base de datos y tiene como objeto realizar una acción
específica.

PL/SQL proporciona un lenguaje sofisticado para construir


procedimientos, se comportan igualmente, como los procedimientos en
otros lenguajes de tercera generación, 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 parámetros:

CREAR PROCEDIMIENTOS ALMACENADO SIN PARÁMETROS

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 PARÁMETROS


BEGIN
Nombre_procedimiento_almacenado();
END;

ENTRADA Y SALIDA DE DATOS


Para mostrar un valor por pantalla:
Lab. Administración de Base de Datos 3 Prof. Elvira Fernández
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIÓN 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
código 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. Administración de Base de Datos 4 Prof. Elvira Fernández


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

cambia el tipo del campo, se cambia en forma automática el tipo de la


variable.

Sintaxis
Variable tabla.Campo% Type

El código 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 función o procedimiento.
TYPE Los diferentes tipos de subprogramas. Realmente,
aparte de funciones y procedimientos, se puede
observar el código de los diferentes tipos: PACKAGE,
PACKAGE BODY, PROCEDURE, TYPE, TYPE BODY
LINE Número de la línea del código
TEXT contenido de código que está en la presente línea

CREAR PROCEDIMIENTOS ALMACENADO CON PARÁMETROS


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 cláusula 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 parámetro del procedimiento. Los


parámetros válidos 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 parámetro NUMBER(6) da un error de
compilación y debe ser reemplazado por NUMBER.

Lab. Administración de Base de Datos 5 Prof. Elvira Fernández


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

Las cláusulas IN, OUT, y IN OUT especifican el modo en que es utilizado


el parámetro. Por defecto, los parámetros son de modo IN. IN significa
que el parámetro puede estar referenciado dentro del cuerpo del
procedimiento, pero no puede ser cambiado. OUT significa que al
parámetro se le puede asignar un valor, pero el valor del parámetro no
puede ser referenciado. IN OUT permite ambas cosas, asignar valores a
los parámetros 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 parámetro, es decir que muestre el
empleado según su código especificado.

ACCESO A UN BASE DE DATOS


El acceso a la información 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 información en un cursor se devuelve y maneja como un conjunto de


registros.

Existen dos tipos de cursores:

Lab. Administración de Base de Datos 6 Prof. Elvira Fernández


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

 Cursores implícitos
 Cursores explícitos

Cursores implícitos
Este tipo de cursor es generado y gestionado por el mismo Oracle y se utiliza
para operaciones Select into. Su característica principal es que solo devuelve
un registro.

Cursores explícitos
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 instrucción SQL

Leer todos los registros del cursor


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

LA INSTRUCCIÓN 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 automática de tipo cursor y almacena
los datos leídos 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. Administración de Base de Datos 7 Prof. Elvira Fernández


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

Ejecutando el procedimiento almacenado.


begin
BUSCAR_EMPLEADOS();
end;

salida:

EJERCICIOS PROPUESTOS

Lab. Administración de Base de Datos 8 Prof. Elvira Fernández


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

Ejercio01: ESQUEMA OE
Crear un procedimiento almacenado en el esquema oe, que genere la
lista de productos de la tabla PRODUCT_INFORMATION. Mostrar el
código_producto, nombre del producto, lista de precios y el minimo
precio, según el código del producto ingresad0 .

Salida

Ejercicio 02 : ESQUEMA HR
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 almacenado que permita actualizar los emails
de los empleados según su codigo, con el domino corporativo ejemplo :
juan@unsch.edu.pe. Después invocar tal procedimiento.

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

Ejercicio 05:
Lab. Administración de Base de Datos 9 Prof. Elvira Fernández
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERIA DE SISTEMAS

crear un procedimiento almacenado que permita borrar las


localizaciones, según la ciudad indicada.

Ejercicio 06:
Crear un procedimiento almacenado que permita aumentar los salarios
máximo y minimo en un porcentaje indicado, según la ocupación que
corresponda.

IV. TAREA PARA CASA

1.-crear un procedimiento almacenado que Muestra el nombre del empleado y apellido


y el departamento al que pertenece, solo si el empleado es de código es 116

2. Creación de un procedimiento almacenado para insertar ocupaciones, salario min y


máx.

3- crear un procedimiento almacenado para mostrar los empleados y que ocupación


tienen, para aquellos empleados que ingresaron entre el año 1990. Mandar como
parámetro el año de ingreso.

4.- Crear un procedimiento almacenado para mostrar los empleados con sus respectivas
ocupaciones , departamentos y salarios.

4.-Agregue dos procedimientos almacenados para el esquema oe.

V. CONCLUSIONES

Lab. Administración de Base de Datos 10 Prof. Elvira Fernández


(IS-443)

También podría gustarte