Está en la página 1de 16

1

PL/SQL: Bloques Anónimos


Objetivos

Después de completar esta lección, usted debería ser


capaz de hacer lo siguiente:

• Distinguir bloques anónimos y nombrar a los bloques


PL/SQL (subprogramas).

• Describir los entornos de desarrollo PL/SQL.

D-2 Copyright © 2010, Oracle. All rights reserved.


Construyendo el programa PL/SQL
Stored
Bloques
procedure/
Anónimos function
DECLARE

BEGIN Aplicaciones
Aplicacion funciones/
de trigger procedimientos
EXCEPTION

Trigger de
END;
Paquetes
Base de Datos

Tipo de
objetos

D-3 Copyright © 2010, Oracle. All rights reserved.


Estructura de bloques anónimos en
PL/SQL

• DECLARE (opcional)
Definir objetos PL / SQL que se utilizarán dentro de este
bloque.
• BEGIN (obligatorio)
Ejecución de sentencias.
• EXCEPTION (opcional)
¿Qué hacer si la acción ejecutable causa una condición
de error?
• END; (obligatorio)

D-4 Copyright © 2010, Oracle. All rights reserved.


Declarando variable en PL/SQL

• Sintaxis:
identifier [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr];

• Ejemplos:
DECLARE
v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_location VARCHAR2(13) := 'Atlanta';
c_ comm CONSTANT NUMBER := 1400;
v_count BINARY_INTEGER := 0;
v_valid BOOLEAN NOT NULL := TRUE;

D-5 Copyright © 2010, Oracle. All rights reserved.


Declarando variables con el atributo
%TYPE

Ejemplos:
...
v_ename employees.last_name%TYPE;
v_balance NUMBER(7,2);
v_min_balance v_balance%TYPE := 10;
...

D-6 Copyright © 2010, Oracle. All rights reserved.


Creando un registro en PL/SQL

Declaración de variables para almacenar el nombre, el


trabajo y el salario de un empleado nuevo.

Ejemplo:
...
TYPE emp_record_type IS RECORD
(ename VARCHAR2(25),
job VARCHAR2(10),
sal NUMBER(8,2));
emp_record emp_record_type;
...

D-7 Copyright © 2010, Oracle. All rights reserved.


Atributo %ROWTYPE

Ejemplos:
• Declaración de una variable para almacenar la
misma información sobre un departamento que se
almacena en la tabla de DEPARTMENTS.
dept_record departments%ROWTYPE;

emp_record employees%ROWTYPE;

D-8 Copyright © 2010, Oracle. All rights reserved.


SALIDA DE DATOS CON
BLOQUES ANONIMOS

Habilite la salida de datos de bloques PL/SQL en consola


de SQL Developer con el siguiente comando:

SET SERVEROUTPUT ON;

D-9 Copyright © 2010, Oracle. All rights reserved.


SALIDA DE DATOS CON
BLOQUES ANONIMOS

Ejemplos:
Declaración de variables en el anónimo dando una
salida de las variables.

DECLARE
variable1 varchar2(20):= 'HOLA MUNDO’;
BEGIN
dbms_output.put_line(variable1);
END;

D-10 Copyright © 2010, Oracle. All rights reserved.


Instrucción SELECT en PL/SQL

La cláusula INTO es necesaria.


Ejemplo:
DECLARE
v_deptid NUMBER(4);
v_loc NUMBER(4);
BEGIN
SELECT department_id, location_id
INTO v_deptid, v_loc
FROM departments
WHERE department_name = 'Sales';
END;

D-11 Copyright © 2010, Oracle. All rights reserved.


Insertando Datos

Adicionar informacion de un nuevo empleado en la


tabla de EMPLOYEES.
Example:
DECLARE
v_empid employees.employee_id%TYPE;
BEGIN
SELECT employees_seq.NEXTVAL INTO v_empid
FROM dual;
INSERT INTO employees(employee_id, last_name,
hire_date, email, job_id, department_id)
VALUES(v_empid, 'HARDING', sysdate, 'MHARDING',
'PU_CLERK', 30);
END;

D-12 Copyright © 2010, Oracle. All rights reserved.


Actualizando Datos

Incrementar el salario de todos los empleados en la


tabla de EMPLOYEES a quienes tengan puesto de
clerks.
DECLARE
v_sal_increase employees.salary%TYPE := 2000;
BEGIN
UPDATE employees
SET salary = salary + v_sal_increase
WHERE job_id = 'PU_CLERK';
END;

D-13 Copyright © 2010, Oracle. All rights reserved.


Borrando Datos

Eliminar las filas que pertenecen al departamento 190


de la tabla de EMPLOYEES.
Ejemplo:
DECLARE
v_deptid employees.department_id%TYPE := 190;
BEGIN
DELETE FROM employees
WHERE department_id = v_deptid;
END;

D-14 Copyright © 2010, Oracle. All rights reserved.


Sentencias COMMIT y ROLLBACK

• Iniciar una transacción con el primer comando


DML seguido de la instrucción COMMIT o
ROLLBACK.

• Utilice las sentencia SQL COMMIT y ROLLBACK


para terminar una transacción de forma explícita.

D-15 Copyright © 2010, Oracle. All rights reserved.


Resumen

• Los bloques anónimos son bloques PL/SQL.

• Subprogramas se denominan bloques PL/SQL,


se declaran como procedimientos o funciones.

D-16 Copyright © 2010, Oracle. All rights reserved.

También podría gustarte