Beruflich Dokumente
Kultur Dokumente
L oja 2008
DECLARACIN DE VARIABLES
Conocer la estructura de un bloque PL /S QL bsico y sus
secciones.
Declarar variables PL /S QL
E jecutar un bloque PL /S QL
PL /S QL , consiste de tres secciones:
DECLARE
....
BEGIN
EXCEPTION
..
END;
E jecutando S entencias y B loques
PL /S QL
DE CL A RE
v_variable V A RCHA R2(5);
B EGIN
S EL E CT column_name
NTO v_variable
FROM table_name;
EX CE PTION
WHE N exception_name THE N
..
END;
Es importante:
FUNTION name
DECLARE name
[DECLARE] RETURN datatype
IS IS
BEGIN
BEGIN BEGIN
-- statements --statements
--statements
RETURN value;
[EXCEPTION]
[EXCEPTION]
[EXCEPTION]
END; END; END;
NOTA:
Una funcin es similar a un procedimiento, excepto que una
funcin puede retornar un valor.
Conceptos de programa
La siguiente tabla contiene una idea general de los conceptos de
programa de PL /S QL que usa un bloque bsico.
Uso de V ariables
Sintaxis:
Ejemplo:
v_sal1 := 50000;
v_sal2 := 60000;
Sintaxis:
S E L E CT select_list
INTO {variable_name[, variable_name]
|record_name}
FROM table
[WHE RE condition];
Gua para recuperar datos en PL/S QL
Terminar cada sentencia S QL con un punto y coma (;).
L a clusula INTO se requiere para la sentencia S EL ECT cuando esta
es insertada en PL/S QL.
L a clusula WHERE es opcional y puede ser usada para especificar
variables de entrada, constantes, literales o expresiones PL /S QL .
Especificar el mismo nmero de variables en la clusula INTO como
columnas en la base de datos en la clusula S ELECT. Debe asegurar
que se correspondan posicionalmente y que sus tipos de datos sean
compatibles.
Use funciones de grupo, as como S UM, en una sentencia S QL .
porque las funciones de grupo se aplican a filas en una tabla.
S entencia S ELECT en PL/S QL
Clusula INTO
L a clusula INTO es obligatoria y ocurre entre las clusulas
S E L E CT y FROM . E sta es usada para especificar los
nombres de variables que contienen los valores que S QL
retorna de una clusula S E L E CT. Usted debe especificar
una variable para cada tem seleccionado, y el orden de las
variables debe corresponderse con los tems
seleccionados.
Use la clusula INTO para llenar variables o variables host.
Las consultas deben retornar una y solo
una fila.
DECLA RE
*
ERROR al line 1:
ORA -01422: exact fetch returns more than requested number of rows
ORA -06512: at line 6
En sentencias S QL potencialmente ambiguas, los
nombres de las columnas de la base de datos preceden
sobre los nombres de variables locales. El ejemplo es
definido como sigue: Retorna la fecha de inicio y la fecha
de hoy de la tabla Empleados para el empleado cuyo id es
176.
Este ejemplo levanta una excepcin en tiempo de
ejecucin no manejada porque en la clusula WHERE,
los nombres de las variables PL/S QL son los mismos que
los nombres de las columnas de la base de datos en la
tabla empleados
L a siguiente sentencia DE L E TE quita todos los
empleados de la tabla empleados en donde el
apellido no es nulo, no justo K ing, porque el
servidor Oracle asume que ambos apellidos en la
clusula WHE RE se refiere a la columna de la
base de datos.
DECLA RE
last_name V A RCHA R2(25) := King;
B EGIN
DELETE FROM employees
WHERE last_name = last_name;
Ejemplo
B orre filas que pertenezcan al departamento 10 de la tabla empleados.
DECLARE
v_deptno employees.department_id%TY PE := 10;
BEGIN
DELETE FROM employees
WHERE department_id = v_deptno;
END;
/
Combinacin de filas
L a declaracin M E RGE inserta o actualiza filas en una
tabla, usando los datos de otra tabla. Cada fila es insertada
o actualizada en la tabla objetivo, dependiendo de una
condicin de equijoin.
NOTA:
L os comandos de control de transacciones son todos vlidos
dentro de PL /S QL , aunque el ambiente del host puede tener
algunas restricciones sobre su uso.
Usted puede incluir comandos de bloqueo explcitos en un
bloque que toman efecto hasta el final de la transaccin.
Tambin, un bloque PL /S QL no necesariamente implica
una transaccin.
Controlando Flujo de Ejecucin de PL/SQL
Utliza la condicin IF para cambiar la ejecucin logica de
las sentencias. L as condiciones de las sentencias IF son:
IF-THE N-E ND IF
IF-THE N-E L S E -E ND IF
IF-THE N-E L S IF-E ND IF
SENTENCIA IF
S INTA X IS :
IF condicion THE N sentencia;
[E L S IF condicion THE N sentencias;]
[E L S E sentencia;]
E ND IF;
SENTENCIAS IF SIMPLES
L as sentencias simples tienen la siguiente sintaxis:
IF condicion THE N sentencia
E ND IF;
SENTENCIAS IF COMPUESTAS
L as sentencias IF compuestas usan operadores logicos como
A ND Y NOT
S INTA X IS :
IF condicin A ND condicion
THE N sentencia;
E ND IF;
FLUJO DE EJECECUCIN DE
SENTENCIAS IF-THEN-ELSEIF
TRUE NOT TRUE
IF
condicion
TRUE NOT TRUE
A ccin condicion
THEN EL S IF
A ccin A ccin
THEN ELS E
Flujo de la ejecucin de Sentencias
IF-THEN-ELSE
TRUE IF NOT TRUE
condicion
A ccin A ccin
THEN ELS E
(incluye una (incluye una
sentencia IF) sentencia IF)
SENTENCIAS IF-THEN-ELSE
Para dar un valor, calcular un porcentaje de el valor basado
en una condicion.
E jemplo.
IF v_start > 100 THE N
v_start = 0.2 v_start;
E L S IF v_start >= 50 THE N
v_start := 0.5 v_start;
ELS E
v_start := 0.1 v_start
E ND IF;
Expresiones CASE
Una expresin CA S E selecciona un resultado y lo retorna.
Para seleccionar el resultado , la expresin CA S E usa una
expresin cuyo valor es usado para seleccionar una o
varias alternativas.
CA S E selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
..
WHEN expressionN THEN resultN
[ELS E resultN+1;]
END;
Expresiones CASE : Ejemplo
S ET S ERV ERPUT ON
DECLA RE
v_grade CHA R(1) := UPPER (& p_grade);
v_appraisal V A RCHA R2(20);
B EGIN
v_appraisal :=
CA S E v_grade
WHEN A THEN Excellent
WHEN B THEN V ery Good
WHEN C THEN Good
ELS E No such grade
END;
DB MS _OUTPUT.PUT_LINE(Grade: ||v_grade ||` A ppraisal ` ||v_appraisal);
END;
/
Manipulando Nulos
Cuando trabajamos con Nulos, puede evitar algunos
errores comunes ,. Teniendo en cuenta las siguentes
reglas:
Comparaciones simples que involucran nulos siempre
producen nulos
A plicando el operador lgico NOT al nulo produce nulo
E n sentencias de control condicional, si la condicin
produce NUL L , se asociacin de secuencias no es
ejecutada.
Tablas Lgicas
Construir una condicin booleana simple con un operador
de comparacin
FALS
AND TRUE FALSE NULL OR TRUE NULL NOT
E
FA L S E FA LS E FA L S E TRUE
FA LS E FA LS E FA LS E TRUE FA LS E NULL
NUL L NUL L
NUL L NULL FA LS E NULL NULL TRUE NULL NULL
Tablas Lgicas
Comparaciones booleanas con operadores lgicos
Ud. Puede construir una condicin simple booleana combinando
nmeros, caracteres i expresiones de tiempo con operadores
lgicos.
Ud. Puede construir una condicin booleana compuesta
componiendo condiciones simples booleanas con operadores
lgicos A ND, OR y NOT. En las tablas lgicas mostradas
anteriormente:
FA L S E toma precedencia en una condicin A ND y TRUE toma
precedencia en una condicin OR
A ND retorna TRUE solo si ambos operandos son TRUE
OR retorna TRUE si ambos operadores son FA LS E
NUL L y TRUE siempre evalan el NULL
Condiciones Booleanas
Cual es el valor de V _FL A G en cada caso ?
v_flag := v_recorder_flag A ND v_available_flag;
TRUE TRUE ?
TRUE FA LS E ?
FA LS E TRUE ?
FA LS E FA LS E ?
Respuestas
1. TRUE 2. FA L S E 3. NULL 4. FA L S E
Control Iterativo : Sentencias LOOP
L OOPs repite una sentencia o secuencia de mltiples
sentencias
Hay tres tipos de ciclos
Ciclo bsico ejecuta acciones repetitivas sin condiciones de
conjunto
Ciclo for - ejecuta control iterativo de acciones basadas en
un conteo
Ciclo while ejecuta control iterativo de acciones basadas en
una condicin
Use la sentencia EXIT para terminar el ciclo.
Ciclos Bsicos
L OOP -- delimitado
statement1; -- sentencias
EXIT [WHEN condition] -- Termina sentencia
END LOOP; -- delimitador
Ciclos Bsicos
L a mas simple forma de las sentencias L OOP es la bsica, la cual encierra una secuencia de
sentencias entre las palabras reservadas L OOP y END L OOP. Un ciclo bsico permite la
ejecucin de al menos una sentencia como mnimo.
LA sentencia EXIT
Usted puede usar EXIT para terminar el ciclo.
Ciclos While
WHILE condition L OOP -- L a condicion es evaluada al comienzo
statement1; -- de cada iteracin
statement2;
END LOOP;
Use el WHIL E para repetir sentencias mientras una condicion es verdadera
En la sintaxis:
Condition es una variable booleana (TRUE, FA L S E, NUL L )
Statement puede ser una o mas sentencias PL/S QL o S QL
S i las variables involucradas en las condiciones no caban
durante el cuerpo del ciclo, luego la condicion continua con TRE
y el ciclo no termina
Nota: S i la condicion produce un NULL, el ciclo es desviado al
control de la prxima sentencia
Ciclos WHILE : Ejemplo
DECLA RE
V _ country_id locations.country_id%TY PE:=CA ;
V _location_id locations.location_id%TY PE;
V _city locations.city%TY PE:=M ontreal;
V _counter NUM B ER := 1;
B EGIN
S ELECT M A X (location_id) INTO v_location_id FROM locations
WHERE country_id = vcountry_id;
WHIL E v_counter <=3 L OOP
INS ERT INTO locations (location_id, city, country_id)
V A L UES ((v_location_id + v_counter), v_city, v_country_id);
v_counter:= v_counter+1;
END L OOP;
END;
/
Ciclos FOR
FOR counter IN [REV ERS E]
lower_bound .. Upper_bound L OOP
statement1; -- de cada iteracin
statement2;
END LOOP;
REV ERS E causa al contador decrementar con cada iteracin desde el salto alto al
bajo
Lower_bound especifica el salto mas bajo del rango de valores del contador
upper_bound especifica el salto mas alto del rango de valores del contador
Ciclo FOR
Inserte tres nuevas location_id para el cdigo de la ciudad
CA y la ciudad de M ontreal
DECL A RE
V _country_id locations.country_id%TY PE := CA ;
V _location_id locations.location_id%TY PE ;
v_city locations.city%TY PE := M ontreal;
B EGIN
S E L ECT M A X (locatio_id) INTO v_location_id
FROM locations
WHERE country_id = V _country_id;
FOR i IN 13 L OOP
INS E RT INTO locations (location_id, city, country_id)
V A L UES ((v_location_id + i ), v_city, v_country_id);
E ND L OOP;
END;
Ciclo FOR
L neas directivas
Referencian al contador solo dentro del ciclo, es
indefinido fuera del ciclo
No referencia al contador como el objetivo de una
asignacin.
Lneas directivas mientras se usan
ciclos
Use el ciclo bsico cuando las sentencias dentro del ciclo
deban ejecutarse al menos una vez
Use el ciclo WHIL E si la condicion debe ser evaluada al
comienzo de cada iteracin,
Use un ciclo F OR si se conoce el numero de iteraciones.
Ciclos Anidados y etiquetas
Ciclos anidados para mltiples etiquetas
Use etiquetas para distinguir entre bloques y ciclos.
S alga del ciclo exterior con la sentencia E X IT que
referencia la etiqueta
Usted puede anidar ciclos a mltiples niveles. Usted puede
anidar ciclos bsicos, FOR, While dentro de otro.
L a finalizacin de un ciclo anidado no determina la
culminacin del ciclo al menos que una excepcin fue
levantada. S in embargo, Usted puede etiquetar ciclos y
salir del ciclo externo con la sentencia E X IT.
Ciclos Anidados y etiquetas
B E GIN
<<outer_loop>>
L OOP
v_counter := v_counter +1;
EX IT WHE N v_counter>10 ;
<<Inner_loop>>
L OOP
EX IT outer_loop WHE N total_done = Y ES ;
-- L eave both loops
EX IT WHE N inner_done = Y ES ;
-- L eave inner loop only
END L OOP Inner_loop;
END L OOP outer_loop:
END
Resumen
E n esta leccin debiste haber aprendido a :
Cambiar el flujo lgico de las sentencias usando
estructuras de control
Condicionales (S entencia IF)
Expresiones CA S E
Ciclos:
Ciclos B asicos
Ciclos FOR
Ciclos While
S entencias de salida E X IT
Capitulo 5
CA PITUL O 5
M arcela Gmez
OBJETIVOS
Despus de completar sta leccin, usted ser capaz de
hacer lo siguiente:
Crear registros PL /S QL definidos por el usuario
Crear un registro con el atributo %ROWTY PE
Crear un ndice por tabla
Crear un ndice por tabla de registros
Describir las diferencias entre registros, tablas, y tablas de
registros
Composicin de tipos de datos
S on de dos tipos :
Registros PL /S QL
Colecciones PL /S QL
Indices por tabla
Tablas anidadas
V array
Contienen componentes internos
S on reusables
Registros PL/SQL
Debe contener uno o mas componentes de cualquier
escalar , archivo o ndice (tipo de tabla de datos), llamados
archivos
S on similares en estructura para registros en lenguaje de
tercera generacin
No son los mismos como filas en una tabla de base de
datos
Tarta una conexin de archivos como una unidad lgica
S on convenientes para ir a buscar una fila de datos desde
una tabla para procesarlos
Creando un archivo PL/SQL
S INTA XIS :
TY PE type_name IS RECORD
(field_declaration [, field_declaration]);
Identifier type_name;
TY PE emp_record_type IS RECORD
(last_name V A RCHA R2(25),
job_id V A RCHA R2(10),
salary NUM B ER(8,2));
Emp_record emp_record_type;
Estructura de registros PL/SQL
Field 1 (data type) Field2(data type) Field3 (data type)
Ejemplo:
1 Jones
2 S mith
3 M aduro
Binary_Integer Scalar
Creando un ndice por Tabla
DECLA RE
TY PE ename_table_type IS TA B L E OF
employees.las_name%TY PE
INDEX B Y B INA RY _INTEGER;
TY PE hiredate_table_type IS TA B L E OF DA TE
INDEX B Y B INA RY _INTEGER;
ename_table ename_table_type;
hiredate_table hiredate_table_type;
B EGIN
ename_table (1) := CA MERON;
hiredate_table(8) :=S Y S DA TE + 7;
IF ename_table.EXIS T(1) THEN
INS ERT INTO
END;
/
Usando Mtodos de ndice por
tabla
L os siguientes mtodos hacen un ndice por tablas mas
fcil de usar:
E X IS TS . Retorna V erdadero si el elemento en PL /S QL existe
COUNT. Retorna el numero de elementos que la tabla contiene
FIRS T A ND L A S T. Retorna el primer y ultimo ndice
PRIOR. Retorna el numero del ndice que precede al ndice n
NE X T. Retorna el numero del ndice que sucede al ndice n
TRIM . Remueve un elemento del el final de la tabla PL /S QL
DE L E TE . E limina todos los elementos de la tabla PL /S QL
ndices por tablas de registros
Define una tabla variable con un tipo de dato PL /S QL
permitido.
Declara una variable PL /S QL para mantener informacin
del departamento
E jemplo:
DECLA RE
TY PE dept_table_type IS TA B L E OF
departments%ROWTY PE
INDEX B Y B INA RY _INTEGER;
Dept_table dept_table_type;
-- cada elemento de dep_table es un registro
Ejemplo de ndices por tabla de
Registros
S ET S ERV EROUTPUT ON
DECL A RE
TY PE emp_table_type IS TA B L E OF
employees.%ROWTY PE
INDEX B Y B INA RY _INTEGER;
my_emp_table emp_table_type;
v_count NUM B ER(3):= 104;
B E GIN
FOR i IN 100 .. V _count
L OOP
S EL ECT * INTO my_emp_table(I) FROM employees;
WHERE employee_id = i;
END L OOP;
FOR i IN my_emp_table.FIRS T.. M y_emp_table.L A S T
L OOP
DB M S _OUTPUT.PUT_L INE (my_emp_table(i).last_name);
E ND L OOP;
END;
/
Resumen
E n esta leccin, usted debi haber aprendido a :
Definir y referenciar las variables PL/S QL de tipos de datos
compuestos:
Registros PL /S QL
ndices por tablas
ndices por tabla de registros
Cursores explcitos
Use cursores explcitos para procesos individuales, cada fila retornada por
mltiples filas con la sentencia S E L E CT.
E l grupo de filas retornado por las consultas a filas mltiples es llamada el
conjunto activo.
L as funciones de los cursores explcitos son :
Pueden procesar mas all de la primera fila retornada por la consulta, fila por fila
Mantiene el rastro de cuales filas estn siendo procesadas
Permite al programador el control manual de los cursores explcitos el bloque PL /S QL
Controlando cursores explcitos
No
Si
declare open fetch EMPTY? close
Prueba las filas
existente
Crea un Identifica el Carga la fila Retorna a fetch Libera el
rea SQL conjunto actual dentro conjunto
activo de las variable si las filas son
encontradas activo
Controlando cursores explcitos
2. Declare el cursor nombrndolo y definiendo la estructura de la consulta a ser
ejecutada dentro de este.
3. A brir el cursor, la sentencia OPEN ejecuta la consulta y une variables que son
referenciadas. L as filas definidas por la consulta son llamadas grupo activo y ahora
estn habilitadas para el fetching.
4. Los datos Fetch del cursor. En el diagrama de flujo se meuestra enla diapositiva,
despues de cada fetch, ustred prueba el cursor para la existencia de cada fila si hay o
no mas filas para procesar, luego se debe cerrar el cursor.
5. Cerrar el cursor. L a sentencia Close libera los grupos activos de filas, esto es ahora
posible para reabrir el cursor para establecer un grupo activo actual
Controlando cursores explcitos
A brir el cursor
Fetch una fila
Cerrar el cursor
A brir el cursor
Cursor puntero
Controlando cursores explcitos
A brir el cursor
Ir a buscar una fila
Cerrar el cursor
Ir a buscar el cursor
Cerrar el cursor
.
.
Abriendo el cursor
S intaxis
OPEN cursor_name;
L OOP
FE TCH emp_cursor INTO v_empno, v_ename;
E X IT WHE N ;
--- Process the retrieve data
E ND L OOP;
Cerrando el cursor
S intaxis
CLOS E cursor_name;
emp_record
Employee_id last_name
100 King
Ciclos LOOP de Cursores
S intaxis
FOR record_name IN cursor_name L OOP
statement1;
S tatement2;
END LOOP;
DECLA RE
CURS OR emp_cursor IS
S EL ECT last_name, department_id last_name
FROM employees
B EGIN
FOR emp_record IN emp_cursor L OOP
-- implicit open and implicit fetch occur
IF emp_record.department_id = 80 THEN
END L OOP; -- implicit close occurs
END;
Ciclos FOR para cursores usando
subconsultas
No se necesita declarar el cursor
E jemplo:
B EGIN
FOR emp_record IN (S EL ECT last_name, department_id FROM
employees) L OOP
IF emp_record.department_id = 80 THEN
END L OOP; -- implicit close occurs
END;
Resumen
E n esta leccin, usted debi haber aprendido a:
Distinguir tipos de cursores:
Cursores implcitos: usados por todas las sentencias DM L y
consultas a filas simples
Cursores explcitos: usados por consultas de cero, uno, o mas filas
M anipular cursores explicitos
E valuar estados del cursor usando atributos del cursor
Usar cursores con ciclos FOR
CA PITULO 7
CONCE PTOS A V A NZA DOS DE CURS ORE S
E X PL ICITOS
Objetivos
Despus de completar esta leccin, usted deber ser capaz
de hacer lo siguiente:
Escribir un cursor cuando es requerida una actualizacin FOR
en el cursor .
Determinar cuando una clausura de actualizacin FOR en un
cursor es requerida.
Determinar cuando usar la sentencia WHERE CURRENT OF
Escribir un cursor que usa subconsultas
Cursores con parmetros
S intaxis:
CURS OR cursor_name
[(parameter_name datatype, )]
IS
S elect_statement;
DECLA RE
CURS OR emp_cursor IS
S EL ECT employees_id, last_name, department_name
FROM employees , departments
WHERE employees, departments_id =
departments.department_id
A ND employees.department_id =80
FOR UPDA TE OF salary NOWA IT;
La clausula WHERE CURRENT OF
S yntaxis:
WHERE CURRENT OF cursor:
DECLA RE
CURS OR emp_cursor IS
S EL ECT employees_id, last_name, department_name
FROM employees , departments
WHERE employees, departments_id =
departments.department_id
A ND employees.department_id =80
FOR UPDA TE OF salary NOWA IT;
CA PITUL O 8
M A NIPUL A NDO E X CE PCIONE S
Objetivos
Despues de completar esta leccion, sera capaza de hacer lo
siguiente:
Definir excepciones PL/S QL
Reconocer excepciones que no son manipulables
L istar diferentes tipos de excepciones manejables PL/S QL
A trapar errores no anticipados
Describir los efectos de la propagacin de excepciones en
cloques anidados
A daptar mensajes de excepciones PL/S QL
Manejando excepciones con
PL/SQL
Una excepcin es un identificador en PL /S QL que es
levantada durante la ejecucin.
Como es levantada?
Un error Oracle ocurre
S e levanta explcitamente
Como se los manipula?
A traparlo con un manipulador
Propagarlo en un entorno de invocacin
Manejando excepciones
Tipos de Excepciones
Implcitamente levantado
Predefinir el servidor Oracle
No predefinir el servidor Oracle
E xplcitamente levantado
Usuario definido
Atrapando excvepciones
S intaxis:
EXCEPTION
WHEN exception1 [OR exception2 . . . ] THEN
statement1;
statement2;
[WHEN exception3 [OR exception4 ] THEN
statement1;
statement2;
]
[WHEN OTHERS THEN
statement1;
statement2;
]
Atrapando excepciones con lneas
de guas
EXCEPTION
WHEN NO DA TA FOUND THEN
statement1;
statement2;
WHEN TOO_M A NY _ROWS THEN
statement1;
WHEN NO OTHERS THEN
statement1;
statement2;
statement3;
END;
Atrapando errores no predefinidos
del Servidor Oracle
DEFINE p_deptno = 10
DECLA RE
e_emps_remaining EXCEPTION;
PRA GM A EXCEPTION_INIT
(e_emps_remaining, -2292);
B EGIN
DEL ETE FROM departments
WHERE department_id = & p_deptno;
COM M IT;
EXCEPTION
WHEN e_emps_remaining THEN
DB M S _OUTOPUT.PUT_L INE (no puede eliminmar dept ||)
TO_CHA R (& p_deptno ) ||. Employees existe. );
END;
Funciones para atrapar
excepciones
S QL CODE : regresa el valor numrico por el cdigo de
error
EXCEPTION
DECLA RE
e_invalid_department EXCEPTION;
B EGIN
UPDA TE departments;
S ET department_name = & p_department_desc
WHERE department_id = & p_department_number;
IF S QL%NOTFOUND THEN
RA IS E e_invalid_department;
END IF;
COMM IT;
EXCEPTIO
WHEN e_invalid_department THEN
DB MS _OUTPUT.PUT_LINE (no such department id);
END;
Llamando entornos
iSQL *Plus Despliega el numero de error
y mensaje a la pantalla
S eccin de excepcin:
EXCEPTION
WHEN NO_DA TA _FOUND THEN
RA IS E_APPL ICA TION ERROR(-20201, el administrador no es empleado
valido);
END;
Resumen
E n esta leccin, usted debi haber aprendido que :
Tipos de excepciones:
E rror predefinido por el servidor Oracle
E rror no predefinido por el servidor Oracle
E rror definido por el usuario
A trapar excepciones
Manejar excepciones:
A trapar la excepcin dentro del bloque PL /S QL
Propagar la excepcin
CAPITULO 9
Objetivos
Despus de completar esta leccin, usted ser capaz de
hacer lo siguiente:
Distinguir bloques annimos PL/S QL de bloques PL/S QL
con nombre (subprogramas)
Describir subprogramas
L istar los beneficios de usar subprogramas
L istar los diferentes entornos de donde los subprogramas
pueden ser envocados.
objetivos
Despus de completar esta leccin, usted ser capaz de
hacer lo siguiente:
Ddescribir bloques PL/S QL y subprogramas
Describir los usos de procedimientos
Crear procedimeintos
Diefrenciar entre parametros formales y actuales
Crear procedimientos si parametros
Invocar un procedimeinto
Manejar excepciones en procedimeintos
Eliminar un procedimiento
Vista general de subprogramas
Un subprograma:
Es un bloque con nombre PL/S QL que puede aceptar
parametros y ser invocado desde una llamada del entorno
E s de dos tipos:un procedimiento que ejecuta una accion
Una funcion que calcula un valor
Es basado en estructutras estandar de bloques PL/S QL
Provee modularidad, reusabilidad, extensibilidad y
manetnimeinto.
Provee facil mantenimiento, mejora la seguridad de datos ,
integridad, funcionamiento y claridad del codigo