Vous êtes sur la page 1sur 3

c 




  
¨ Los registros PL/SQL son estructuras de datos complejas que permiten
tratar variables diferentes, pero relacionadas, como si fuera una unidad.

  NOMBRE_REGISTRO 
( campo1 tipo1 [:=expr1],
campo2 tipo2 [:=expr2],
.....
campontipon [:=exprn])

Una vez declarado un registro es necesario definir una variable de este tipo.
Podemos utilizar también %TYPE y %ROWTYPE.
Se puede asignar un registro a otro del mismo tipo o sus campo
individualmente, con
la condición de que ambos sean del mismo tipo.

Ejemplo:

DECLARE
TYPE t_Rec1Type IS RECORD (
Field1 NUMBER,
Field2 VARCHAR2(5));
TYPE t_Rec2Type IS RECORD (
Field1 NUMBER,
Field2 VARCHAR2(5));
v_Rec1 t_Rec1Type;
v_Rec2 t_Rec2Type;
BEGIN
a  
  


   
 
! "# $%& ' a
v_Rec1 := v_Rec2;
a 
 
! 
 ' a
v_Rec1.Field1 := v_Rec2.Field1;


  
Las tablas en PL/SQL se asemejan a los arrays del lenguaje C.
Sintácticamente se las trata de la misma forma que a las matrices, aunque su
implementación es distinta.

¨ Una tabla PL/SQL es similar a una tabla de base de datos pero como si
tuviera dos columnas una de ellas es el índice y la otra el valor.
¨ La clave es siempre BINARY_INTEGER y el tipo valor es el tipo que hubiera
especificado en la definición.
¨ El máximo número de filas viene especificado por el número máximo de
valores que se pueden representar mediante el tipo BINARY_INTEGER.

TYPE NOMBRE_TABLA IS TABLE OF TIPO_DE_DATO


INDEX BY BINARY_INTEGER;

 



· TABLA.COUNT-> Devuelve el número de filas de una tabla.
· TABLA.DELETE->Borra filas de la tabla.
· TABLA.EXISTS-> Devuelve TRUE si existe en la tabla el elemento
especificado.
· TABLA. FIRST-> Devuelve el índice de la primera fila desde la tabla.
· TABLA.LAST-> Devuelve el índice de la última fila de la tabla.
· TABLA.NEXT-> Devuelve el índice de la fila de la tabla que sigue a la fila
especificada.
· TABLA.PRIOR-> Devuelve el índice de la fila de la tabla que antecede a la fila
especificada.

EJEMPLO
DECLARE
TYPE t_LastNameTable IS TABLE OF students.last_name%TYPE
INDEX BY BINARY_INTEGER;
v_LastNamest_LastNameTable;
v_Index BINARY_INTEGER;
BEGIN
Y('
v_LastNames(43) := 'Mason';
v_LastNames(50) := 'Junebug';
v_LastNames(47) := 'Taller';
$$ )%Y*'
v_Index := v_LastNames.FIRST;
$$ +,Y*'
v_Index := v_LastNames.LAST;
END;
/



Una tabla puede contener datos de tipo registro.

EJEMPLO
DECLARE
TYPE t_StudentTable IS TABLE OF students%ROWTYPE
INDEX BY BINARY_INTEGER;
a   a 
v_Studentst_StudentTable;
BEGIN
a ( 

- ,,,  
 
. ,,, / a 
SELECT *
INTO v_Students(10001)
FROM students
WHERE id = 10001;
v_Students(10001).first_name := 'Larry';
DBMS_OUTPUT.PUT_LINE(v_Students(10001).first_name);
END;
/

Vous aimerez peut-être aussi