2010-08-23 23 views
9

tengo algunos números que quiero almacenar en una matriz. ¿cómo declararé la matriz y le asignaré un valor en oracle pl/sql?oracle pl/sql arrays

+0

¿Tiene diferentes conjuntos de esos números o sólo uno? –

+0

tengo el número como 1,2,5,10,100 quiero guardarlo en una matriz como matriz [0] = 1, matriz [1] = 2, ..etc después de todo quiero acceder como una matriz [i ] – Andromeda

Respuesta

14

Hay tipo de matriz en PL/SQL, pero podemos crear los mismos utilizando la tabla

declare 
    type NumberArray is table of number index by binary_integer; 
    myArray NumberArray; 
begin 

    myArray(0) := 1 
    myArray(1) := 2 
    --or use a for loop to fill 
end; 

The explanation article

EDITAR:

o como dijo Adam Musch si conocer el tamaño de datos de los datos, en los que estamos operando, podemos usar VARRAYs que son de longitud fija, esto es oracle entorno, por lo que los subíndices comienzan en 1,

La alternativa es usar VARRAY, donde el subíndice de matriz comienza en 1 y la longitud de los VARRAY es fija.

Semántica:

declare type VarrayType is varray(size) of ElementType; 

Ejemplo:

declare 
     type NumberVarray is varray(100) of NUMERIC(10); 
     myArray NumberVarray; 
    BEGIN 
     myArray := NumberVarray(1,10,100,1000,10000); 

     myArray(1) = 2; 

     for i in myArray.first..myArray.last 
     loop 
     dbms_output.put_line('myArray(' || i || '): ' || myArray(i)); 
     end loop; 
    end; 
END; 

Salida:

myArray(1) : 2 
myArray(2) : 10 
myArray(3) : 100 
myArray(4) : 1000 
myArray(5) : 10000 
+1

Hay un tipo de ARRAY en PL/SQL; se llama VARRAY, que es una matriz de 1 indexado con un límite superior fijo de elementos. Lo que estás usando es una matriz asociativa, que se parece más a una HashMap de Java, donde BINARY_INTEGER es la clave y NUMBER es el valor. –