Académique Documents
Professionnel Documents
Culture Documents
DATOS II
Base de
Datos II
Bloques PL / SQL
Introduccin
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Agenda
Declarar Variables.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Agenda
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
-Opcional
INGENIERA
DE SOFTWARE
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Tipos de Bloques
Procedimiento
Annimo
[DECLARE]
Funcin
PROCEDURE nombre
FUNCTION nombre
IS
RETURN tipodato
IS
BEGIN
-- sentencias
BEGIN
-- sentencias
BEGIN
-- sentencias
[EXCEPTION]
[EXCEPTION]
[EXCEPTION]
END;
END;
END;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Tipos de Variables
Variables PL/SQL:
Escalares.
Compuestas.
Referencia.
Variable No-PL/SQL:
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Sintaxis
identificador [CONSTANT] tipodato [NOT NULL]
[:= | DEFAULT expr];
Ejemplos:
DECLARE
v_hiredate
v_deptno
v_location
c_comm
INGENIERA
DE SOFTWARE
DATE;
NUMBER(2) NOT NULL := 10;
VARCHAR2(13) := 'Atlanta';
CONSTANT NUMBER := 1400;
identificador := expr
Ejemplos
v_hiredate := '01-01-2001';
v_ename := 'Mauro';
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Ejemplos:
DECLARE
v_job
VARCHAR2(9);
v_count BINARY_INTEGER := 0;
v_total_sal NUMBER(9, 2) := 0;
v_orderdate DATE := SYSDATE + 7;
c_tax_rate
CONSTANT NUMBER(3, 2) := 8.25;
v_valid BOOLEAN NOT NULL := TRUE;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
El Atributo %TYPE
INGENIERA
DE SOFTWARE
Sintaxis
identificador Tabla.nombre_columna%TYPE;
Ejemplos:
v_name
v_balance
v_min_balance
INGENIERA
DE SOFTWARE
employees.last_name%TYPE;
NUMBER(7, 2);
v_balance%TYPE := 10;
BASE DE
DATOS II
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
DBMS_OUTPUT.PUT_LINE
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
v_name||CHR(10)||
v_address||CHR(10)||v_state||
CHR(10)||v_zip;
INGENIERA
DE SOFTWARE
:= LOWER(v_name);
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Sentencia IF
Sintaxis:
IF condicin THEN
sentencias;
[ELSIF condicin THEN
sentencias;]
[ELSE
sentencias;]
END IF;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Expresiones CASE
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Repeticiones bsicas
Sintaxis:
LOOP
sentencia1;
. . .
EXIT [WHEN condicin];
END LOOP;
condicin
INGENIERA
DE SOFTWARE
-- delimitador
-- sentencias
-- sentencia EXIT
-- delimitador
BASE DE
DATOS II
Repeticiones bsicas
Ejemplo:
DECLARE
v_country_id
locations.country_id%TYPE := 'CA';
v_location_id
locations.location_id%TYPE;
v_counter
NUMBER(2) := 1;
v_city
locations.city%TYPE := 'Montreal';
BEGIN
SELECT MAX(location_id) INTO v_location_id FROM locations
WHERE country_id = v_country_id;
LOOP
INSERT INTO locations(location_id, city, country_id)
VALUES((v_location_id + v_counter), v_city, v_country_id);
v_counter := v_counter + 1;
EXIT WHEN v_counter > 3;
END LOOP;
END;
/
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Repeticiones WHILE
Sintaxis:
WHILE condicin LOOP
sentencia1;
sentencia2;
. . .
END LOOP;
La condicin es evaluada
al inicio de cada iteracin
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Repeticiones FOR
Sintaxis:
FOR contador IN [REVERSE]
lmite_inferior .. lmite_superior LOOP
sentencia1;
sentencia2;
. . .
END LOOP;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Convenciones de nomenclatura
Identificador
Convencin Nombre
Ejemplo
Variable
v_name
v_sal
Constante
c_name
c_company_name
Cursor
name_cursor
emp_cursor
Excepcin
e_name
e_too_many
Tipo Tabla
name_table_type
amount_table_type
Tabla
name_table
countries
Tipo Registro
name_record_type
emp_record_type
Registro
name_record
customer_record
p_name
p_sal
g_name
g_year_sal
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Cursor SQL
Cursores implcitos.
Cursores explcitos.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
SQL%FOUND
SQL%NOTFOUND
SQL%ISOPEN
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
DECLARE
CURSOR emp_cursor
IS
SELECT ename, sal
FROM emp
WHERE deptno = 10
ORDER BY sal DESC;
BEGIN
FOR emp_rec IN emp_cursor
LOOP
DBMS_OUTPUT.PUT_LINE
('Employee ' || emp_rec.ename || ' earns ' ||
TO_CHAR (emp_rec.sal) || ' dollars.');
END LOOP;
END;
/
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
PL/SQL RECORDs.
Colecciones PL/SQL.
Tabla INDEX BY
Tabla anidada
VARRAY
Son reutilizables.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Registros PL/SQL
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Sintaxis:
TYPE nombre_tipo IS RECORD
(declaracin_campo [, declaracin_campo]);
identificador
nombre_tipo;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
El Atributo %ROWTYPE
Declare una variable de acuerdo a
una coleccin de columnas en una
tabla o vista de base de datos.
Prefije %ROWTYPE con la tabla de
base de datos.
Los campos en el registro toman sus
nombres y tipos de datos de las
columnas de la tabla o vista.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
El Atributo %ROWTYPE
Ejemplos:
Declare una variable para almacenar la informacin de un
departamento de la tabla DEPARTMENTS.
dept_record
departments%ROWTYPE;
INGENIERA
DE SOFTWARE
employees%ROWTYPE;
BASE DE
DATOS II
El Atributo %ROWTYPE
DECLARE
CURSOR emp_cursor IS
select * from emp;
emp_rec emp%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_rec;
EXIT WHEN emp_cursor%NOTFOUND;
dbms_output.put_line(emp_rec.empno || ', ' || emp_rec.ename);
END LOOP;
CLOSE emp_cursor;
END;
/
INGENIERA
DE SOFTWARE
Sentencias de Control de
Transacciones
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Resumen
En esta sesin hemos aprendido lo siguiente:
INGENIERA
DE SOFTWARE