Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. ESTRUCTURA BASICA
Bloque no nombrado
[DECLARE]
Declaracin de sentencias
BEGIN
Ejecucion de sentencias
[EXCEPTION]
Declaracin de manejo de excepciones
END;
/
Bloque de Declaraciones.- Permite definir tipos de datos,
estructuras, y variables (nombre y tipo, valor).
Bloque e ejecucin.- Permiten procesa datos, puede contener:
asignacin de valores, comparaciones, operaciones condicionales
e iteraciones.
Bloque nombrado
FUNCTION function_name
[( parametro1
[IN][OUT] [NOCOPY]
tipo_dato_sql | tipo_dato_plsql
, parametro2
[IN][OUT] [NOCOPY]
tipo_dato_sql | tipo_dato_plsql
, parametro(n+1) [IN][OUT] [NOCOPY]
tipo_dato_sql | tipo_dato_plsql)]
RETURN [tipo_dato_sql | tipo_dato_plsql]
[ AUTHID {DEFINER | CURRENT_USER}]
[ DETERMINISTIC | PARALLEL_ENABLED ]
[ PIPELINED ]
[ RESULT_CACHE [RELIES ON table_name]]
IS
Declaracin de sentencias
BEGIN
Ejecucin de sentencias
[EXCEPTION]
Declaracin de manejo de excepciones
END;
/
Sentencia CASE
--------BEGIN
FOR i IN (SELECT nombre FROM rental.cliente c) LOOP
dbms_output.put_line('The title is ['||
i.nombre||']');
END LOOP;
END;
--------DECLARE
CURSOR c IS SELECT nombre FROM rental.cliente c;
BEGIN
FOR i IN c LOOP
dbms_output.put_line('The name is ['||
i.nombre||']');
END LOOP;
END;
Bucle simple
Bucles simples son estructuras explcitas. Requieren que a manejar tanto el ndice de
bucle y salida criterios. Tpicamente, los bucles simples se utilizan en combinacin con
instrucciones de cursor definidos localmente y cursores de referencia (REF CURSOR).
Oracle proporciona atributos de cursor que ayudan a administrar las actividades en los
bucles: %FOUND, %NOTFOUND, %ISOPEN, and %ROWCOUNT.
DECLARE
name rental.cliente.nombre%TYPE;
DECLARE
TYPE demo_record_type IS RECORD
(id
NUMBER DEFAULT 1,
value VARCHAR2(10) := 'One');
demo DEMO_RECORD_TYPE;
BEGIN
dbms_output.put_line('['||demo.id||']['||
demo.value||']');
END;
---------DECLARE
TYPE full_name IS RECORD
(first VARCHAR2(10 CHAR) := 'John',
last VARCHAR2(10 CHAR) := 'Taylor');
TYPE demo_record_type IS RECORD
(id
NUMBER DEFAULT 1,
contact FULL_NAME);
demo DEMO_RECORD_TYPE;
BEGIN
dbms_output.put_line('['||demo.id||']');
dbms_output.put_line('['||demo.contact.first||']['||
demo.contact.last||']');
END;
Collections Colecciones
Las colecciones son matrices y listas. Las matrices se diferencian de las listas ya que
usan unos enumerados secuencialmente ndice, mientras que las listas utilizan un
ndice numrico o de cadena nica no secuencial. Las matrices estn densamente
pobladas listas porque han numerado secuencialmente ndices. Mientras que las listas
pueden tener densamente poblada ndices numricos, sino que tambin puede ser
escasamente pobladas. Escasamente pobladas medios existen lagunas en una
secuencia o que no son secuenciales.
DECLARE
TYPE number_table IS TABLE OF NUMBER;
list NUMBER_TABLE := number_table(1,2,3,4,5,6,7,8);
BEGIN
list.DELETE(2);
FOR i IN 1..list.COUNT LOOP
IF list.EXISTS(i) THEN
dbms_output.put('['||list(i)||']');
END IF;
END LOOP;
dbms_output.new_line;
END;