InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL


VARRAYS

Definición de 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 general es la siguiente:


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

    Una consideración a tener en cuenta es que en la declaración de un varray el tipo de datos no puede  ser de los siguientes tipos de datos:

  • BOOLEAN
  • NCHAR
  • NCLOB
  • NVARCHAR(n)
  • REF CURSOR
  • TABLE
  • VARRAY

    Sin embargo se puede especificar el tipo utilizando los atributos %TYPE y %ROWTYPE

    Los VARRAY deben estar inicializados antes de poder utilizarse. Para inicializar un VARRAY se utiliza un constructor (podemos inicializar el VARRAY en la sección DECLARE o bien dentro del cuerpo del bloque):


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;

     El tamaño de un VARRAY se establece mediante el número de parámetros utilizados en el constructor, si declaramos un VARRAY de cinco elementos pero al inicializarlo pasamos sólo tres parámetros al constructor, el tamaño del VARRAY será tres. Si se hacen asignaciones a elementos que queden fuera del rango se producirá un error.

    El tamaño de un VARRAY podrá aumentarse utilizando la función EXTEND, pero nunca con mayor dimensión que la definida en la declaración del tipo. Por ejemplo, la variable v_lista que sólo tiene 3 valores definidos por lo que se podría ampliar hasta cinco elementos pero no más allá.

    Un VARRAY comparte con las tablas de PL todas las funciones válidas para ellas, pero añade las siguientes:

  • LIMIT . Devuelve el número maximo de elementos que admite el VARRAY.
  • EXTEND .Añade un elemento al VARRAY.
  • EXTEND(n) .Añade (n) elementos al VARRAY.

Varrays en la base de datos

    Los VARRAYS pueden almacenarse en las columnas de la base de datos. Sin embargo, un varray sólo puede manipularse en su integridad, no pudiendo modificarse sus elementos individuales de un varray.

    Para poder crear tablas con campos de tipo VARRAY debemos crear el VARRAY como un objeto de la base de datos.

    La sintaxis general es:


CREATE [OR REPLACE]
TYPE
<nombre_tipo> IS VARRAY (<tamaño_maximo>) OF <tipo_elementos>;

    Una vez que hayamos creado el tipo sobre la base de datos, podremos utilizarlo como un tipo de datos más en la creacion de tablas, declaración de variables ....

    Vease el siguiente ejemplo:


CREATE OR REPLACE  TYPE PACK_PRODUCTOS AS VARRAY(10) OF VARCHAR2(60);
CREATE TABLE OFERTAS
(
CO_OFERTA NUMBER,
PRODUCTOS PACK_PRODUCTOS,
PRECION NUMBER 
);


    Para modificar un varray almacenado, primero hay que seleccionarlo en una variable PL/SQL. Luego se modifica la variable y se vuelve a almacenar en la tabla.

    La utilización de VARRAYS en la base de datos está completamente desaconsejada.

 

 


Inicio | Tutorial PL/SQL Tablas PL/SQLTutorial PL/SQLBULK COLLECT Versión para imprimir Foros de consulta

 
Varrays por Leo
Respuesta recibida el [10/01/2008 09:08:18]
Por què razon no se aconseja utilizar varrays en la base de datos?

 
riko por karo
Respuesta recibida el [11/02/2008 07:27:34]
stas rikoooooooooooooo y mui buena el tutorial aprendi muxiooooo

 
no arrays por juan
Respuesta recibida el [03/04/2008 09:41:20]
supongo, que debe ser porque para usarlos, debes de conocer su extension maxima al declararlos y eso limita un poco, mejor usar estructuras dinámicas,
aunque esa es solo mi opinión

 
pregunta por Juan E.S.
Respuesta recibida el [03/04/2008 02:01:22]
hola... 
en la sintaxis del array para base de datos
le pusiste IS VARRAY, y en el ejemplo AS VARRAY, cual es la correcta?

 
Pasar array a PL/SQL desde php por Calero
Respuesta recibida el [26/05/2008 05:01:08]
Hola,
Es posible llamar a una función PL/SQL desde php que tiene como parámetros un VARRAY?
Gracias

 
Puedo Crear un VARRAY dentro de otro VARRAY por Allan Dueñas
Respuesta recibida el [01/07/2008 06:01:03]
Hola,
Queria saber si puedo crear un VARRAY y usarlo dentro de otro VARRAY... gracias

 
Tamaño maximo del VARRAY es pequeño para mí! por ATROMAN
Respuesta recibida el [10/07/2008 06:27:57]
 Tengo que hacer en una B.D un VARRAY de 8760 y sólo puedo insertar hasta 999 datos, ¿cómo lo puedo hacer?
Mi código sería:
CREATE OR REPLACE TYPE "EDIFICA_MAE"."VECTOR_PERFIL1" AS VARRAY (999) OF NUMBER(4)

CREATE TABLE EDIFICA_MAE.T_PERFIL_INDEPEN1
(
ID INTEGER NOT NULL,
PERFIL EDIFICA_MAE.VECTOR_PERFIL1
)
INSERT INTO EDIFICA_MAE.T_PERFIL_INDEPEN1 (ID, PERFIL) VALUES ('1', EDIFICA_MAE.VECTOR_PERFIL1('0','2', '4', ... '8760'));

Y me da error al insertar. Espero vuestros comentarios.



 
INSETAR UN VARRAY por FERNANDO
Respuesta recibida el [05/10/2008 09:29:07]
COMO INSERTO UN VARRAY EN UNA TABLA, PUES CUANDO LO HAGO ME DICE QE HAY UN ERROR,POR FOVAR EXPLICAR UN EJEMPLO

 
VArrays por Scard
Respuesta recibida el [17/10/2008 12:15:23]
Si en efecto el usar arreglos es de manera mas estatica, cuando son declarados de cierto tipo de tamaño asi quedan una tabla en cambio puede crecer de tamaño y eso no afectaria

 
array en procedimiento por hagonma
Respuesta recibida el [23/10/2008 04:42:39]
es posible pasar un array a un procedimiento como parametro..? alguien lo ha echo?

 
como puedo insetar una tabla en office 2003 por Anónimo
Respuesta recibida el [17/10/2009 06:34:03]
office 2003

 
clases? por Marcela
Respuesta recibida el [26/11/2009 10:42:03]
Hola a todos.
Los comentarios para este tutorial en lo particular es muy bueno, pero tengo una duda.... cuando declaramos un varray es es el equivalente a una clase??? y para usarlo es necesario tener objetos de ese tipo ???
TYPE t_cadena IS VARRAY(5) OF VARCHAR2(50);
/* Asignamos los valores con un constructor */
v_lista t_cadena:= t_cadena('Aitor', 'Alicia', 'Pedro','','');

 
Cojonesss por SinDuda
Respuesta recibida el [17/12/2009 11:54:17]
Me uno a los que contradicen que segun
el menda éste "esta completamente desaconsejado en base de datos". Pues nada hombre, los usaremos para llegar a la luna. Lo que hay que oir!!!!

 
Cojonesss por SinDuda
Respuesta recibida el [17/12/2009 11:54:20]
Me uno a los que contradicen que segun
el menda éste "esta completamente desaconsejado en base de datos". Pues nada hombre, los usaremos para llegar a la luna. Lo que hay que oir!!!!

 
El motivo por el cual es desac... por Rodrigo
Respuesta recibida el [03/02/2010 06:06:00]
El motivo por el cual es desaconsejable usarlo es que las tabla PLSQL son mejores, aqui mismo en esta pagina hay doucmentacion (http://www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=59).

Un VARRAY contrario a lo que dicen en un comentario, NO tiene limite.. se extiende usando EXTEND


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Tablas PL/SQLTutorial PL/SQLBULK COLLECT Versión para imprimir

Tipo VARRAY
Autor: Pedro Herrarte Sánchez
Visitas: 48654 Fecha de publicación: 17/07/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 89 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 794 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 749 | Comentarios: 3 | Archivo: Articulos
Visitas: 3144 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14504 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1478 | Comentarios: 3 | Archivo: Articulos
Visitas: 691 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2012 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 123 12/01/2010
certificado de pensiones horizonte por ruby ... [Actualidad] 32 14/02/2010
jalar datos a un listbox por happypeace31 ... [Visual Basic .NET] 1 21/09/2009
fecha valida datetimepicker por jess ... [Visual Basic .NET] 1 04/03/2010
Mi numero de autogenerado por chari ... [Visual Basic .NET] 4 01/03/2010
quiero saber en que entidad estoy afiliada a cesantias y pensiones por adriana ... [WIN 98/NT/2000/XP] 23 28/11/2009
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 1 10/03/2010
CERTIFICADO por LIZETH ... [Actualidad] 0 11/03/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 111 28/01/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 54 10/02/2010
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 135 26/01/2010
pensiones por eduard ... [Visual Basic 6.0] 0 11/03/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
28/08/2006 Ubuntu en VmWare con VMware Tools
13/11/2006 Excepciones    forma parte de...Tutorial C#
28/06/2006 Triggers en PL/SQL    forma parte de...Tutorial PL/SQL
29/05/2007 Equivalencia de datos de SQL Server y .NET    forma parte de...Tutorial de Transact SQL
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
09/11/2006 Interfaces    forma parte de...Tutorial C#
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
11/10/2006 Métodos    forma parte de...Tutorial C#
24/12/2009 Encriptación con AES Rijndael - Ejemplo

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]