Oracle - definicion de matrices PL/SQL

 
Vista:

definicion de matrices PL/SQL

Publicado por Juan Carlos (1 intervención) el 19/11/2006 21:46:08
Necesito ayuda en la definicion de matrices en PL/SQL como se la define y como se la llena

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:definicion de matrices PL/SQL

Publicado por Rodolfo Reyes (445 intervenciones) el 20/11/2006 19:01:52
Existen 2 tipos de arreglos
•Arreglo tabla
•Arreglo Registro

Arreglo tabla
Se debe declarar el arreglo, el tipo de dato (varchar2)dependerá de su utilidad.

Sintaxis
type tipotabla is table of tipo de dato
index by binary_integer;

Ejemplo

type t_nombre is table of varchar2 (50)
index by binary_integer;

-- Se debe declarar una variable de tipo arreglo (arreglo creado)
vnombre t_nombre;

Para asignar un valor en un arreglo se lo puede hacer fijo o mediante un bucle

Sintaxis

Nombretabla(índice)

Ejemplo
fijo
vnombre (1) := ‘Pedro’;
vnombre (2) := ‘juan’;
vnombre (3) := ‘Maria’;
.
.

Con bucle
loop
vnombre (i) := ‘a’ || I;
.
.
.
i := i + 1;
exit when I = 10;
end loop;

Para leer un arreglo lo puedes hacer fijo ó mediante un bucle, asignándole a una variable variable el valor del arreglo indicado mediante el índice

Con bucle
For j in 1..tot_reg loop
variable := vnombre(i);
.
.
.
i := i + 1;
end loop;

Fijo
variable := vnombre (1);
.
.

Arreglo Registro
Se debe declarar el arreglo

Sintaxis
type tipo_registro is record (
campo1 tipo1 [not null][:= expr1]
campo2 tipo2 [not null][:= expr2]
.
.
)

Ejemplo

type t_registro is record (
campo1 number,
campo2 varcha2
)

-- Se debe declarar una variable de tipo arreglo (arreglo creado)
vnombre t_registro;

Para asignar un valor en un arreglo se lo puede hacer fijo o mediante un bucle

Sintaxis

Nombre_registro(indice).campo

Ejemplo
fijo
vnombre(1).campo1 := 1;
vnombre(1).campo2 := ‘juan’;
vnombre(2).campo1 := 2;
vnombre(3).campo2 := ‘maría;
.
.

Con bucle
loop
vnombre(i).campo1 := i;
vnombre(i).campo2 := ‘a’ || i;

.
.
.
i := i + 1;
exit when I = 10;
end loop;

Para leer un arreglo lo puedes hacer fijo ó mediante un bucle, asignándole a una variable variable el valor del arreglo indicado mediante el índice

Con bucle
For j in 1..tot_reg loop
variable := vnombre(i).campo1;
.
.
.
i := i + 1;
end loop;

Fijo
variable := vnombre (1).campo1;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:definicion de matrices PL/SQL

Publicado por valencia (1 intervención) el 29/05/2007 13:10:24
quiero que me mande informacion es decir un reporte de los dbms oracle porfa se los agradecere
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:definicion de matrices PL/SQL

Publicado por gil (1 intervención) el 22/04/2009 17:13:38
son muy burdos sus ejemploss....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

definicion de matrices PL/SQL

Publicado por Raul (1 intervención) el 29/05/2018 17:12:02
Puedes declarar una variable tabla de tipo de otra tabla que tengas en la base de datos. Por ejemplo, en la base tienes la tabla paises de la siguiente manera:

paises(nombre varchar2(100),
continente varchar2(100));

En la declaración de variables en plsql lo haces de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE
     TYPE INFOPAISES IS TABLE OF PAISES%ROWTYPE INDEX BY BINARY_INTEGER;
     datosPais INFOPAISES;
BEGIN
     datosPais(1).nombre := 'ECUADOR';
     datosPais(1).continente := 'AMERICA';
 
     datosPais(2).nombre := 'MEXICO';
     datosPais(2).poblacion := 'AMERICA';
 
     FOR i IN datosPais.FIRST..datosPais.LAST
     LOOP
          dbms_output.put_line('Pais: ' || datosPais(i).nombre || '. Continente: ' || datosPais(i).continente);
     END LOOP;
END;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar