sábado, 5 de julio de 2014

Tarea 6

  • %ROWTYPE

Define un registro con la estructura de la tabla o vista de la B.D., los campos del registro toman sus nombres y tipos de datos de las columnas de la vista o tabla.

Ventajas de %ROWTYPE

El número y los tipos de datos de las columnas de la tabla pueden no ser conocidos. 
Simplifica la programación al no tener que definir explícitamente los campos y tipos del registro. 
Es útil para realizar recuperaciones de filas con la sentencia SELECT:

Sintaxis:

{Cursor_name | cursor_variable_name | nombre_tabla}% ROWTYPE

Ejemplo:

DECLARE
--V_Empleados Empleado%ROWTYPE;
BEGIN
-- Inicialización de campos de la variable
V_Empleados.codigo:=‘Emp01’;
V_Empleados.nombre:=‘Pablo Martínez’;
V_Empleados.ciudad:=‘MADRID’;
...
END;
  •    VARRAY 
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.

Sintaxis:

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

Ejemplo:

DECLARE
    /* Declaramos el tipo VARRAY de cinco elementos VARCHAR2*/
    TYPE t_cadena IS VARRAY(5) OF VARCHAR2(50);
    /* Asignamos los valores con un constructor */
    v_lista t_cadena:= t_cadena('Aitor', 'Alicia', 'Pedro','','');
BEGIN
    v_lista(4) := 'Tita';
    v_lista(5) := 'Ainhoa';
END;

  • RECORD
Es una agrupación de variables, cada una con su tipo de dato (diferente o igual). 

Puede tener tantas variables como sea necesario 
A estas variables se les pueden asignar valores iniciales inclusive el valor NOT NULL. 
Los valores que no tengan un valor inicial se les asigna NULL. 
Para definir estos nuevos tipos de datos, los debemos hacer en la parte DECLARE del bloque, subprograma o paquete. 
Podemos tener RECORD’s que sean parte de otros.

Sintaxis:

DECLARE
TYPE emp_record_type IS RECORD
(empno NUMBER(4) NOT NULL:=100,
job VARCHAR2(9),
ename emo.ename%TYPE);
emp_record emp_record_type;



Ejemplo:

DECLARE
   pais_rec cpaises%rowtype;
BEGIN
   SELECT * into pais_rec
   FROM cpaises
   WHERE id =335;
END;

  •      TABLE
Una tabla no es más que una colección de elementos identificados por un índice. Son similares a los arreglos o vectores. Y deben contener dos componentes:

  • Una llave primaria del tipo BINARY_INTEGER la cual nos permite indexar la tabla PL/SQL. 
  • Y una columna de un tipo de datos escalar o record los cuales almacenan los elementos de la tabla.
  • Puede incrementar su tamaño dinámicamente

Debemos tener en cuenta que las tablas PL/SQL no son las mismas tablas a las que se hace referencia en las bases de datos.

Sintaxis:

TYPE type_name IS TABLE OF
{column_type|variable%TYPE | table.column%TYPE} [NOT NULL]
[INDEX BY BINARY_INTEGER];
identifier type_name;


Ejemplo:

DECLARE
TYPE PAIS IS RECORD 
(
CO_PAIS NUMBER NOT NULL ,
DESCRIPCION VARCHAR2(50),
CONTINENTE VARCHAR2(20)
); 
TYPE PAISES IS TABLE OF PAIS INDEX BY BINARY_INTEGER ;
tPAISES PAISES;
BEGIN

tPAISES(1).CO_PAIS := 27;
tPAISES(1).DESCRIPCION := 'ITALIA';
tPAISES(1).CONTINENTE := 'EUROPA';
END;

  • CASE
La sentencia CASE, como su nombre lo indica, te permite evaluar casos o distintas condiciones realizando operaciones diferentes para cada uno de ellos en tus PL-SQL Packages en Oracle. 

La sentencia CASE se puede usar de dos formas distintas en tus PL-SQL Packages en Oracle, la primera te permite evaluar la igualdad de una variable y la segunda te permite evaluar condiciones de cualquier tipo. 

Sentencia condicional multiple

Sintaxis:

CASE
   WHEN condition THEN
   WHEN condition THEN
   ELSE
END CASE;
end;

Ejemplo:

declare
  x number;
  r varchar(100);
  begin
     case
         WHEN x=1 THEN r:='aa';
         WHEN x=2 THEN r:='bb';
         ELSE r:='cc';
      END CASE;
 end;

  • %TYPE

Permite declarar una variable basada en:
  • Otras variables previamente declaradas
La definición de una columna de la base de datos Preceder de %TYPE por: 

  • La tabla y la columna de la base de datos
  • El nombre de la variable definida con anterioridad.

Sintaxis:

tipo_campo | variable%TYPE
customers.name%type

Ejemplo: 


DECLARE
 v_EmpName emp.ename%TYPE;
 BEGIN
 SELECT ename INTO v_EmpName FROM emp WHERE ROWNUM = 1;
 DBMS_OUTPUT.PUT_LINE('Name = '|| v_EmpName);
 END;


0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio