Está en la página 1de 28

Base de Datos Avanzado II

Sesin 6
Introduccin a PL/SQL
Profesor: Ing. Juan Deza Ari

Objetivos de la Sesin
Conocer

los beneficios del lenguaje de programacin PL/SQL Distinguir las diferentes secciones que conforman un bloque PL/SQL

Temas a tratar
Introduccin

a PL/SQL Declarar variables en PL/SQL Operadores y Funciones

Introduccin a PL/SQL

PL/SQL

Lenguaje de programacin que se utiliza para acceder a bases de datos ORACLE desde distintos entornos. Est integrado con el servidor de base de datos de modo que su cdigo puede ser procesado de forma rpida y eficiente.

PL/SQL
PL/SQL significa Lenguaje Procedimental SQL Trabaja con :

Variables y tipos de datos Estructuras de control Procedimientos y funciones Tipos de objetos y mtodos

Caractersticas del PL/SQL


Combina la potencia y la flexibilidad del SQL con la de un lenguaje 3GL Lenguaje estructurado y potente Cdigo es procesado de forma rpida y eficiente Permite empaquetar rdenes SQL Minimiza comunicacin entre cliente y el servidor de Base de Datos

Ejemplo
DECLARE /* Declaracin de variables a utilizar v_NewMajor VARCHAR2(10):= 'HISTORY; v_LastName VARCHAR2(10):= 'URMANN; BEGIN /* Actualiza la tabla students */ UPDATE students SET major = v_NewMajor WHERE last_name = v_LastName;

*/

IF SQL%NOTFOUND THEN INSERT INTO students (ID, last_name, major) VALUES (seq_student.NEXTVAL, v_LastName, v_NewMajor); END IF; END;

Bloques PL/SQL
La unidad bsica en PL/SQL es el bloque Un programa PL/SQL puede estar compuesto por bloques secuenciales o anidados Consta de tres secciones:

Seccin Declarativa Seccin Ejecutable Seccin de Excepciones

Seccin Declarativa
Aqui se declaran o localizan todas las variables, tipos, cursores y subprogramas locales usados por el bloque. Pueden aparecer instrucciones SQL como instrucciones procedimentales Esta seccin es opcional

DECLARE -- Seccin Declarativa V_TOTAL NUMBER(6); V_CADENA VARCHAR2(100);

Seccin Ejecutable
Seccin principal del bloque Se incluyen tanto las sentencias sql como las procedimentales Es la nica seccin es obligatoria

BEGIN -- Seccin ejecutable DBMS_OUTPUT.PUT_LINE('BIENVENIDOS A ORACLE PLSQL'); END; PARA ACTIVAR LA VISUALIZACION DE MENSAJES EN EL SQLPLUS Set serveroutput on size 30000

Seccin de Excepciones
Se usa para responder a los errores que se presenten en la ejecucin del programa El cdigo de esta seccin no se utiliza a menos que que ocurra un error Esta seccin es opcional

EXCEPTION -- Seccin de tratamiento de errors WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('NO HAY DATOS');

Estructura del Bloque


DECLARE /* Seccin declarativa */ BEGIN /* Seccin ejecutable */ EXCEPTION /* Seccin de excepciones */ END; /

Ejemplo de Bloque
DECLARE /* Seccin declarativa */ v_total number(4,2); v_numero1 number(4,2); v_numero2 number(4,2); BEGIN /* Seccin ejecutable */ v_numero1:=25; v_numero2:=5; v_total:= v_numero1/v_numero2; dbms_output.put_line('Resultado:' || v_total); EXCEPTION /* Seccin de excepciones */ WHEN zero_divide THEN dbms_output.put_line('Error de divisin por Cero'); WHEN others THEN dbms_output.put_line('Error Desconocido!!!'); END;

Bloques Anidados
Un bloque puede contener otros bloques Se pueden anidar bloques en la seccin ejecutable o en la seccin de excepciones No se puede anidar bloques dentro de la seccin declarativa

Ejemplo de Bloque Anidado


DECLARE v_total number(4,2); v_numero1 number(4,2) :=25; v_numero2 number(4,2) :=5; BEGIN Begin v_total:= v_numero1/v_numero2; Exception When zero_divide then dbms_output.put_line('Error de divisin por Cero'); When others then dbms_output.put_line('Error Desconocido!!!'); End; Begin dbms_output.put_line('Resultado:' || v_total); End; EXCEPTION WHEN others THEN dbms_output.put_line('Error Desconocido!!!'); END;

Comentarios
Un comentario monolnea comienza con dos guiones (--) y contina hasta el final de la lnea Un comentario multilnea comienza con /* y termina con */

Declarar variables en PL/SQL

Declaracin de variables
Son espacios de memoria que pueden contener valores de datos A medida que se ejecuta el programa puede cambiar el contenido de la variable Se declaran en la seccin declarativa de un bloque Cada una de ellas tiene un nombre y un tipo de dato especfico

Sintaxis de la declaracin
nombre_variable tipo [CONSTANT] [NOT NULL][:=valor]

CONSTANT : NOT NULL :

convierte a la variable en una constante, donde su valor inicial es de solo lectura permite hacer obligatorio inicializar la variable

Ejemplo
DECLARE v_total number(4,2); v_numero1 number(4,2) :=25; -- asignando valor inicial v_numero2 number(4,2) NOT NULL :=5; -- obligando inicializar la variable BEGIN v_total:= v_numero1/v_numero2; dbms_output.put_line('Resultado:' || v_total);
EXCEPTION WHEN others THEN dbms_output.put_line('Error Desconocido!!!'); END;

Utilizacin de %TYPE
Permite definir una variable con el tipo de dato que tiene una columna de una tabla determinada El uso de %TYPE permite que los programas PL/SQL sean ms flexibles y capaces de adaptarse a las definiciones cambiantes de las bases de datos

DECLARE nombre_variable tabla.columna%TYPE;

Utilizacin de %ROWTYPE
Permite definir un registro en PL/SQL con los mismos tipos que una fila de una tabla determinada Si cambia la definicin de la tabla, %ROWTYPE tambin lo hace

DECLARE variable_registro

tabla%ROWTYPE;

Ejemplo
DECLARE v_EmpRecord emp%ROWTYPE; v_Ename emp.ename%TYPE; v_Job emp.job%TYPE; BEGIN -- Recupera un registro de la tabla emp y lo almacena en v_EmpRecord SELECT * INTO v_EmpRecord FROM emp WHERE empno = 7369; DBMS_OUTPUT.PUT_LINE('Emp: ' || v_EmpRecord.ename || ' v_EmpRecord.job); Puesto: ' ||

/* Recupera dos campos de la tabla emp y los almacena en dos variables*/ SELECT ename, job INTO v_Ename, v_Job FROM emp WHERE empno = 7698; DBMS_OUTPUT.PUT_LINE('Emp: ' || v_Ename || ' Puesto: ' || v_Job); END;

Operadores y Funciones

Operadores

Los operadores lgicos, aritmticos y de concatenacin usados en PL/SQL son los mismos que se utilizan en SQL.
Operador
** , NOT + , - , ||

Operacin
Exponenciacin, negacin lgica Suma, resta, concatenacin

*,/
= , < , > , <= , >=, <>, !=, IS NULL, LIKE, BETWEEN

Multiplicacin, divisin
Comparacin

AND
OR

Conjuncin
Inclusin

Funciones

La mayora de funciones vlidas en SQL se pueden utilizar en PL/SQL con excepcin de las funciones de grupo las cuales se aplican a grupos de filas de una tabla por tanto solo pueden ir dentro de sentencias SQL.

DECLARE v_Sal NUMBER; v_name VARCHAR2(50); v_Fecha DATE; BEGIN v_Sal := ROUND(2585.6452, 2); v_name := INITCAP('lenguaje de programacin vi'); v_Fecha := TO_DATE('06/05/2005', 'DD/MM/YYYY'); DBMS_OUTPUT.PUT_LINE(' Curso: ' || v_name || ' Fecha: ' || TO_CHAR(v_Fecha,'DD DAY MONTH YYYY')); DBMS_OUTPUT.PUT_LINE(' Salario: ' || v_Sal); END;

Final
Alguna

duda?

pregunta o alguna

Gracias.

También podría gustarte