Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿QUÉ ES PL/SQL?
• PL/SQL es una extension de SQL con características de lenguaje
de programación.
• Sentencias de manipulación y consulta de datos, se incluyen sin
tener que desarrollar programas.
ENTORNO PLS/SQL
Motor PL/SQL
PL/SQL Ejecutor de
Bloque Bloque Sentencias
PL/SQL PL/SQL SQL
Procedurales
Servidor Oracle
BENEFICIOS DE PL/SQL
• Mejora Rendimiento.
• Modularización.
• Es portable
• Puede declarer identificadores
• Puede programar con las estructuras de control de un lenguaje
procedural
• Puede manejar errores.
PL/SQL – Tipos de Bloques
FUNCIÓN
PROCEDIMIENTO
BLOQUE ANÓNIMO
FUNCTION name
PROCEDURE name IS
[DECLARE] RETURN datatype IS
BEGIN
BEGIN BEGIN
SENTENCIAS
SENTENCIAS
SENTENCIAS
[EXCEPTION]
[EXCEPTION]
[EXCEPTION]
END;
END;
END;
• Pasos:
1. Declarar el cursor
2. Abrir el cursor en la zona de procedimiento
3. Leer el cursor. Es necesario ejecutar un bucle para leer todos los cursores
4. Cerrar cursor
PL/SQL – Control de Cursores
PL/SQL – Cursores
• ATRIBUTOS DE LOS CURSORES
Se le añaden al nombre del cursor
begin
v_appraisal :=
case
when v_grade = 'A' then 'Excelente'
when v_grade = 'B' then 'Muy Bueno'
when v_grade = 'C' then 'Bueno'
else 'No aprueba el grado'
end;
DBMS_OUTPUT.PUT_LINE('Grado '||v_grade||' '||
' Su calificación es: '||' '|| v_appraisal);
end;
PL/SQL – Ciclos o Iteraciones
a) Bucles simples: LOOP Ejemplo
declare
LOOP v_contador number := 1;
secuencia de instrucciones; begin
END LOOP; LOOP
insert into temporal
values (v_contador, ‘ejemplo’);
Para salir del ciclo se usa:
v_contador := v_contador + 1;
EXIT WHEN v_contador > 50;
EXIT [WHEN condición]
END LOOP;
end;
PL/SQL – Ciclos o Iteraciones
b) Bucles condicionales: WHILE Ejemplo
Repetirá una secuencia de declare
instrucciones hasta que la v_contador number := 1;
condición controladora del ciclo
deje de ser cierta. Su sintaxis es: begin
WHILE v_Contador <= 50 LOOP
WHILE condición LOOP insert into temporal
secuencia de instrucciones; values (v_contador,
END LOOP; ‘ejemplo’);
v_contador := v_contador + 1;
END LOOP;
end;
PL/SQL – Ciclos o Iteraciones
c) Bucles numéricos: FOR Ejemplo
Permite repetir una secuencia de declare
instrucciones un número fijo de v_contador number := 1;
veces. Su sintaxis es:
begin
FOR índice IN [REVERSE]
FOR v_Contador IN 1 .. 50 LOOP
entero..entero LOOP
insert into temporal
secuencia de instrucciones;
values (v_contador,
END LOOP;
‘ejemplo’);
El incremento del FOR siempre es
1. END LOOP;
end;
PL/SQL – Procedure
¿Qué es un procedure Sintaxis
(procedimiento)? Create [or replace] procedure
• Es un tipo de subprograma que nombre_procedimiento
realiza una acción. [(parámetro1 modo tipoDato,
• Los procedimientos se pueden parámetro2 modo tipoDato, …)]
almacenar en una base de
datos, como objetos de is/as
esquema, para repetir su [declaración variables locales]
ejecución. begin
bloque pl/sql;
end [nombre_procedmiento];
PL/SQL – Procedures
Concepto de Programa Descripción
Nombre_procedimiento Nombre del procedimiento
parámetro Nombre de una variable PL/SQL cuyo valor se rellena en el
entorno de llamada o se transfiere a él, o ambas cosas,
dependiendo del modo que se utilice.
modo Tipo de parámetro:
IN (por defecto)
OUT
IN OUT
TipoDato Tipo de dato del parámetro: puede ser cualquier tipo de dato SQL
o PL/SQL. Puede ser el tipo de dato TYPE, %ROWTYPE o cualquier
otro tipo de dato escalar o compuesto
Bloque PL/SQL Cuerpo procedural que define la acción que realiza el
procedimiento
PL/SQL – Desarrollo de los Procedure
PL/SQL – Parámetros Formales y Parámetros Reales
• Parámetros Formales: variables declaradas en la lista de
parámetros de la especificación de un subprograma.
Create or replace procedure aumentoSalario (p_id number,
p_monto number)
….
• Parámetros Reales: variables o expresiones a las que se hace
referencia en la lista de parámetros de la llamada de un
subprograma.
aumentoSalario (v_id, 2000)
PL/SQL – Modos de Parámetros Procedurales
PL/SQL – Parámetros IN
176 p_id