Está en la página 1de 4

BLOQUES SUBPROGRAMAS:

PROCEDIMIENTOS
Construcción de procedimientos almacenados en los cuales se tienen en cuenta parámetros de
entrada, bloques SQL al interior de la zona de ejecución (delimitada por las palabras reservadas
BEGIN y END) y uso de variables referenciadas de columna (%TYPE).

ASPECTOS GENERALES

Los bloques nominados (entre ellos los procedimientos almacenados) se almacenan en la base de
datos, y pueden ser invocados directamente desde otros bloques.

Por lo tanto es un procedimiento ES UN SUBPROGRAMA cuyo código se guarda en la


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

Tiene las siguientes partes:

Una sección declarativa especial (CREATE OR REPLACE PROCEDURE nombre_procedimiento


(lista parámetros) AS), una sección ejecutable (similar a la del bloque anónimo) y una sección de
manejo de excepciones (similar a la del bloque anónimo y es la única opcional).

El manejo de un procedimiento (en PL/SQL constituye un objeto que se almacena en la base de datos)
incluye varios pasos: codificación del programa que crea el procedimiento, ejecución del programa que
crea el procedimiento, ejecución del procedimiento creado (almacenado en la base de datos).

Codificación del programa que crea el procedimiento

La codificación del programa puede seguir cualquiera de los esquemas mostrados posteriormente,
dependiendo de los elementos requeridos en su construcción: cursores, estructuras de control,
sentencias SQL (SELECT, UPDATE o INSERT) y tipos PL/SQL.

CREATE OR REPLACE PROCEDURE nombre_procedimiento (lista parámetros) AS


<<declaración de datos>>
BEGIN
<<instrucciones que conforman el flujo normal del proceso a implementar>>
EXCEPTION
WHEN nombre_excepción_1 THEN
<<instrucciones que corresponden al tratamiento de la excepción>>

WHEN nombre_excepción_2 THEN


<<instrucciones que corresponden al tratamiento de la excepción>>
END;
Recordar:

 CREATE OR REPLACE PROCEDURE … IS : inicio sección declarativa del programa que


especifica el nombre del objeto a crear (en este caso un objeto tipo procedimiento) y/o los
parámetros (entrada y/o salida).

 El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el


procedimiento existe, se producirá, un error.
 La sintaxis es muy parecida a la de un bloque anónimo, salvo porque se reemplaza la
seccion DECLARE por la secuencia PROCEDURE ... IS en la especificación del procedimiento.

 Debemos especificar el tipo de datos de cada parámetro. Al especificar el tipo de dato del
parámetro no debemos especificar la longitud del tipo.

 Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema


nos indica que el procedimiento se ha creado con errores de compilación podemos ver estos
errores de compilacion con la orden SHOW ERRORS en SQL *Plus.

PROCEDIMIENTO PARAMETRIZADO SIN CURSORES

EJEMPLO 1:

CREATE OR REPLACE PROCEDURE sumar (X NUMBER, Y NUMBER) IS


v_x number;

BEGIN

V_x := x + y;

DBMS_OUTPUT.PUT_LINE(' La suma de los numeros es'|| v_x);

END;

En el caso de procedimiento la instrucción anterior crea un objeto con el nombre asignado en la


sección declarativa. En pantalla se observará el mensaje: procedure created. En caso de contener
errores el código, se creará igualmente el objeto pero el mensaje sería: procedure created with
errors compilated.

2
Ejecución del procedimiento almacenado

Una vez se ha ejecutado el programa que crea el procedimiento y éste se encuentra como objeto en la
base de datos (exitosamente, sino lo fue corregir primero el código), puede ser ejecutado desde la
línea de comandos o invocado desde el interior de otro bloque. En este caso se ejecutará desde la
línea de comandos, es decir que ahora si se ejecutaran las líneas de la sección ejecutable (BEGIN…
END).

EXECUTE nombre_procedimiento(valores de los parámetros);

EXECUTE sumar1(5,3)

EJERCICIO

Crear un procedimiento pl/sql que muestra los números desde el 1 hasta el valor pasado
como parámetro

EJEMPLO 2:

Ejecute las tablas de estudiante y corra el siguientes procedimiento, luego analice


escriba el paso a paso de cada línea de código.

1. Ejecute las tablas del archivo estudiante1

2. Crear un procedimiento almacenado llamado p_ejemplo1 conforme a lo especificado


previamente.

CREATE OR REPLACE PROCEDURE p_ejemplo1 (p_codigo Estudiantes.codigo%TYPE) AS


v_nombres Estudiantes.nombres%TYPE;
v_apellidos Estudiantes.apellidos%TYPE;

BEGIN
SELECT nombres, apellidos
INTO v_nombres, v_apellidos
FROM Estudiantes
WHERE codigo = p_codigo;
INSERT INTO Promedios VALUES(p_codigo, v_nombres,v_apellidos, null);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO No_existe VALUES(p_codigo);
DBMS_OUTPUT.PUT_LINE('no existe ' || p_codigo);
END;

3
3. Ejecutar el procedimiento creado enviándole el parámetro

EXECUTE p_ejemplo1(10000);

4. Dado que el código no existe, consultar la tabla No_Existe y se observará que se ha


insertado un registro en ella.

SELECT * FROM No_existe

5. Insertar un registro a la tabla Estudiantes, utilice sus datos personales.

INSERT INTO Estudiantes


VALUES(27649,'Idalia','Rojas','UNIAJC',6882828,3118119981);

6. Ejecutar el procedimiento creado enviándole el parámetro del código que usted utilizó
para sus datos.

EXECUTE p_ejemplo1(27649);

7. Dado que el código existe, consultar la tabla Promedios y se observará que ………

También podría gustarte