sábado, 14 de junio de 2014

Tarea 6 - Procedimientos Almacenado


El siguiente tema se trata sobre procedimientos almacenados que utilicen las siguientes instrucciones:
· Varray
· Record
· Table
· instruccion case
· %type
· %Rowtype

VARRAYS
Un varray se manipula de forma muy similar a las tablas de PL, pero se implementa de forma diferente. Los elementos en el varray se almacenan comenzando en el índice 1 hasta la longitud máxima declarada en el tipo varray.

La sintaxis:
TYPE <nombre_tipo> IS VARRAY (<tamaño_maximo>) OF <tipo_elementos>;


Ejemplo:
DECLARE

/* Declaramos el tipo VARRAY de cuatro elementos VARCHAR2*/
TYPE t_cadena IS VARRAY(4) OF VARCHAR2(50);

/* Asignamos los valores con un constructor */
v_lista t_cadena:= t_cadena('Gerardo', 'Francisco', ,'','');

BEGIN
v_lista(3) := 'Miguel';
v_lista(4) := 'Marco';

END;


RECORD
Es una estructura de datos en PL/SQL, almacenados en campos, cada uno de los cuales tiene su propio nombre y tipo y que se tratan como una sola unidad lógica.
Los campos de un registro pueden ser inicializados y pueden ser definidos como NOT NULL. Aquellos campos que no sean inicializados explícitamente, se inicializarán a NULL.

La sintaxis:

TYPE <nombre> IS RECORD
(
campo <tipo_datos> [NULL | NOT NULL]
[,<tipo_datos>...]
);

Ejemplo:
DECLARE
TYPE baseDeDatos IS RECORD
(
CODIGO VARCHAR2(50),
DESCRIPCION VARCHAR2(50),
PROFESOR VARCHAR2(20)
);
 /* Declara una variable identificada por baseDeDatos de tipo ASIGNATURA. Esto significa que la variable baseDeDatos tendrá los campos CODIGO, DESCRIPCION y PROFESOR. */
baseDeDatos ASIGNATURA;
BEGIN 
 /* Asignamos valores a los campos de la variable. */ 
 baseDeDatos.CODIGO:= 'ACI800'; 
 baseDeDatos.DESCRIPCION := 'PL SQL';
 baseDeDatos.PROFESOR := 'Erwin Fischer';
 END;


TABLE
Las tablas de PL/SQL son tipos de datos que nos permiten almacenar varios valores del mismo tipo de datos.
Una tabla PL/SQL :
· Es similar a un array
· Tiene dos componenetes: Un índice de tipo BINARY_INTEGER que permite acceder a los elementos en la tabla PL/SQL y una columna de escalares o registros que contiene los valores de la tabla PL/SQL
· Puede incrementar su tamaño dinámicamente.

La sintaxis:
TYPE <nombre_tipo_tabla> IS TABLE OF
 <tipo_datos> [NOT NULL]
 INDEX BY BINARY_INTEGER ;


Ejemplo:
DECLARE
 /* Definimos el tipo PAISES como tabla PL/SQL */ 
 TYPE PAISES IS TABLE OF NUMBER INDEX BY BINARY_INTEGER ;
 /* Declaramos una variable del tipo PAISES */
 tPAISES PAISES;
 BEGIN
 tPAISES(1) := 1;
 tPAISES(2) := 2;
 tPAISES(3) := 3;
 END;


INSTRUCCIONES CASE
La estructura condicional CASE permite evaluar una expresion y devolver un valor u otro.

La sintaxis:
CASE <expresion>
      WHEN <valor_expresion> THEN <valor_devuelto>
      WHEN <valor_expresion> THEN <valor_devuelto>
   ELSE <valor_devuelto> -- Valor por defecto 
 END

Ejemplo: 
DECLARE
docente varchar(100),
asignatura varchar(20)
SET asignatura = 'SQL' 
SET docente = (CASE
                     WHEN asignatura = 'SQL SERVER' THEN 'Maoma el profe'
                     WHEN asignatura = 'PL SQL' THEN 'Bueno el Profe'
                     ELSE 'Buscando Profe'
 END)
PRINT docente


%TYPE y %ROWTYPE
Atributos de tipo. Un atributo de tipo PL/SQL es un modificador que puede ser usado para obtener información de un objeto de la base de datos. El atributo %TYPE permite conocer el tipo de una variable, constante o campo de la base de datos. El atributo%ROWTYPE permite obtener los tipos de todos los campos de una tabla de la base de datos, de una vista o de un cursor.

La sintaxis %TYPE :
tipo_campo | variable%TYPE
customers.name%type

La sintaxis %ROWTYPE :
{Cursor_name | cursor_variable_name | nombre_tabla}% ROWTYPE

Ejemplo:
CREATE PROCEDURE simple_procedure IS
 v_location VARCHAR2(15) := ’Granada’;
PI CONSTANT NUMBER := 3.1416;
v_nombre tabla_empleados.nombre%TYPE;
 reg_datos micursor%ROWTYPE;
BEGIN
 /*Parte de ejecucion*/
EXCEPTION 

No hay comentarios.:

Publicar un comentario