Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DATOS II
Base de
Datos II
Subprograma PL / SQL
Introduccin
INGENIERA
DE SOFTWARE
CARRERA DE
INGENIERA
INFORMTICA
Y DE SISTEMAS
Agenda
Creacin de Procedimientos
Creacin de Funciones
Creacin de Paquetes
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Introduccin
Un subprograma:
Es de dos tipos:
INGENIERA
DE SOFTWARE
ejecutable
ejecutable
(opcional)
(opcional)
Seccin
Seccin de
de excepciones
excepciones
END;
END;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Procedimientos
Qu es un procedimiento?
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
END raise_sal;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
OUT
IN OUT
Se debe especificar
Se debe especificar
Retornado al entorno de
llamada
Parmetros formales
actan con constantes
Variables inicializadas
Parmetros reales
Debe ser una variable
pueden ser literales,
expresiones, constantes o
variables inicializadas
Se le puede asignar un
valor por defecto
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Procedimiento raise_salary
176
INGENIERA
DE SOFTWARE
p_id
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Procedimiento QUERY_EMP
p_id
171
SMITH
INGENIERA
DE SOFTWARE
p_name
7400
p_salary
0.15
p_comm
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Parmetros IN OUT
Ambiente de llamada
'8006330575'
Procedimiento format_phone
'(800)633-0575'
p_phone_no
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BEGIN
add_dept;
add_dept('TRAINING', 2500);
add_dept(p_loc => 2400, p_name => 'EDUCATION');
add_dept(p_loc => 1200);
END;
/
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Declarar Sub-Programas
CREATE OR REPLACE PROCEDURE leave_emp2
(p_id IN employees.employee_id%TYPE)
IS
PROCEDURE log_exec
IS
BEGIN
INSERT INTO log_table (user_id, log_date)
VALUES (USER, SYSDATE);
END log_exec;
BEGIN
DELETE FROM employees
WHERE employee_id = p_id;
log_exec;
END leave_emp2;
/
INGENIERA
DE SOFTWARE
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Eliminar Procedimientos
Ejemplo:
DROP PROCEDURE raise_salary;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Funciones almacenadas
Una funcin es un bloque PL/SQL
nombrado que retorna un valor.
Una funcin se puede almacenar en
la base de datos como un objeto de
esquema para su ejecucin
frecuente.
Una funcin es invocada como parte
de una expresin.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Ejecutar funciones
Invoque a una funcin como parte
de una expresin PL/SQL.
Cree una variable para almacenar
el valor retornado.
Ejecute
la funcin. La variable
recibir el valor retornado a
travs de una sentencia RETURN.
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Procedimiento get_sal
p_id
117
RETURN v_salary
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Sintaxis:
DROP FUNCTION nombre_funcion
Ejemplo:
DROP FUNCTION get_sal;
BASE DE
DATOS II
Paquetes
Especificacin (Specification)
Cuerpo (Body)
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
CrearCREATE
especificaciones
de
paquetes
[OR REPLACE] PACKAGE package_name
[AUTHID {CURRENT_USER | DEFINER}]
{IS | AS}
[PRAGMA SERIALLY_REUSABLE;]
[collection_type_definition ...]
[record_type_definition ...]
[subtype_definition ...]
[collection_declaration ...]
[constant_declaration ...]
[exception_declaration ...]
[object_declaration ...]
[record_declaration ...]
[variable_declaration ...]
[cursor_spec ...]
[function_spec ...]
[procedure_spec ...]
[call_spec ...]
[PRAGMA RESTRICT_REFERENCES(assertions) ...]
END [package_name];
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
Ejemplo de especificacin
CREATE OR REPLACE PACKAGE emp_actions AS -- spec
TYPE EmpRecTyp IS RECORD (emp_id INT, salary REAL);
CURSOR desc_salary RETURN EmpRecTyp;
PROCEDURE hire_employee (
ename VARCHAR2,
job
VARCHAR2,
mgr
NUMBER,
sal
NUMBER,
comm
NUMBER,
deptno NUMBER);
PROCEDURE fire_employee (emp_id NUMBER);
END emp_actions;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
BASE DE
DATOS II
package_name.type_name
package_name.item_name
package_name.subprogram_name
package_name.call_spec_name
BEGIN
DBMS_OUTPUT.PUT_LINE('the message');
END;
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Resumen
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Resumen
INGENIERA
DE SOFTWARE
BASE DE
DATOS II
Resumen
INGENIERA
DE SOFTWARE