PL SQL
PL SQL
PL/SQL(lenguaje Procedimental/SQL)
PL/SQL es un sofisticado lenguaje de programación QUE SE UTILIZA PARA acceder a base de
datos Oracle desde distintos entornos.
Oracle es una base de datos relacional, el lenguaje utilizado para acceder a las base de datos
relacionales es denominado sql es un lenguaje flexible y eficiente, con características que han sido
diseñadas para la manipulación de datos relacionales, es un lenguaje de cuarta generación por ejemplo:
Si queremos eliminar a los estudiantes que cursan una especialidad.
Los lenguajes de tercera generación como C y Cobol, son de naturaleza mas procedimental ya
que implementa algoritmo paso a paso para resolver el problema.
ESTRUCTURA DE BLOQUES:
La unidad básica en PL/SQL es el bloque, todos los programas están compuesto por bloques,
cada bloque realiza una unidad lógica de trabajo en el programa, separando así unas tareas de otras. un
bloque tiene la siguiente estructura:
DECLARE
/* SECCION DECLARATIVA - AQUÍ SE INCLUYE LAS VARIABLES/*
BEGIN
/* SECCION EJECUTABLE – AQUÍ SE INCLUYE LAS ORDENES SQL YU PROCEDIMENTAL, ESTA ES
LA SECCION PRINCIPAL DEL BLOQUE Y LA UNICA QUE ES OBLIGATORIA./*
EXCEPTION
/* SECCION DE MANEJO DE EXCEPCIONES – AQUÍ SE INCLUYE LAS ORDENES PARA EL MANEJO
DE LAS EXCEPCIONES*/
END;
VARIABLES:
LA INFORMACION SE TRANSMITE ENTRE PL/SQL Y LA BASE DE DATOS MEDIANTE VARIABLES.
Una variable es una zona de almacenamiento que puede ser leída o escrita por el programa.
Cada variable tiene un tipo especifico asociado, el tipo define la clase de información que se
puede almacenar en la variable.
DECLARE
V_STUDENNAME VARCHAR2(20);
V_CURRENTDATE DATE;
V_NUMBERCREDITS NUMBER(3);
O TAMBIEM
DECLARE
V_VLOOPCOUNTER BINARY_INTEGER;
V_CORRENTLYREGISTERED BOOLEAN;
PL/SQL TAMBIEN ADMITE TIPOS DEFINIDOS POR EL USUARIO: TABLAS Y REGISTROS. LOS TIPOS
DEFINIDOS POR EL USUARIO PERMITE VISUALIZAR LA ESTRUCTURA DE LOS DATOS
MANIPULADOS POR UN PROGRAMA:
DECLARE
UNIVERSIDAD CESAR VALLEJO
TYPE T_SUDENTRECORD IS RECORD(
FIRSTNAME VARCHAR2(10),
LASTNAME VARCHAR2(10),
CURRENTCREDITS NUMBER(3));
V_STUDENT T_STUDENTRECORD;
ESTRUCTURA DE BUCLE:
Un bucle permite ejecutar repetidamente una cierta secuencia de ordenes, por ejemplo, el siguiente bloque
utiliza un bucle simple para insertar los números 1 a en temp_table;
DECLARE
V_LOOPCOUNTER NUMBER :=1;
BEGIN
LOOP
INSERT INTO TEMP_TABLE (NUM_COL)
VALUES (V_LOOPCOUNTER);
V_LOOPCOUNTER := V_LOOPCOUNTER + 1;
EXIT WHEN V_LOOPCOUNTER > 50;
END LOOP;
END;
SQL> SELECT *
2 FROM TEMP_TABLE;
podríamos haber utilizado otro tipo de bucle numérico FOR, que tiene una sintaxis mas simple. podemos
ejecutar la misma acción que en el ejemplo anterior:
BEGIN
FOR V_LOOPCOUNTER IN 1..50 LOOP
INSERT INTO TEMP_TABLE (NUM_COL)
VALUES (V_LOOPCOUNTER);
END LOOP;
END;
CURSORES:
Se emplea pár. procesar múltiples filas extraídas de la base de datos( con un orden select ).
Utilizando un cursor, el programa puede recorrer, una por una, las filas de vueltas, y procesarlas.
ejemplo, el siguiente bloque extrae el nombre y apellidos de todos los estudiantes de la base de datos.
DECLARE
V_FIRSTNAME VARCHAR2(14);
V_LASTNAME VARCHAR2(20);
CURSOR C_STUDENTS IS
SELECT FIRST_NAME, LAST_NAME FROM STUDENTS;
BEGIN
OPEN C_STUDENTS;
LOOP
FETCH C_STUDENTS INTO V_FIRSTNAME,V_LASTNAME;
EXIT WHEN C_STUDENTS%NOTFOUND;
END LOOP;
CLOSE C_STUDENTS;
END;