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


Registros PL/SQL

    Cuando vimos los tipos de datos, omitimos intencionadamente ciertos tipos de datos.

    Estos son:

Declaración de un registro.

    Un registnslpwdro es una estructura de datos en PL/SQL, almacenados en campos, cada uno de los cuales tiene su propio nombre y tipo y que se tratan como una sola unidad lógica.

    Los campos de un registro pueden ser inicializados y pueden ser definidos como NOT NULL. Aquellos campos que no sean inicializados explícitamente, se inicializarán a NULL.

    La sintaxis general es la siguiente:


TYPE <nombre> IS RECORD
(
campo <tipo_datos> [NULL | NOT NULL]
[,<tipo_datos>...]
);

    El siguiente ejemplo crea un tipo PAIS, que tiene como campos el código, el nombre y el continente.


TYPE
PAIS IS RECORD
(
CO_PAIS NUMBER ,
DESCRIPCION VARCHAR2(50),
CONTINENTE VARCHAR2(20)

);

    Los registros son un tipo de datos, por lo que podremos declarar variables de dicho tipo de datos.


DECLARE

TYPE
PAIS IS RECORD
(
CO_PAIS NUMBER ,
DESCRIPCION VARCHAR2(50),
CONTINENTE VARCHAR2(20)
);
/* Declara una variable identificada por miPAIS de tipo PAIS 
Esto significa que la variable miPAIS tendrá los campos
ID, DESCRIPCION y CONTINENTE.

*/

miPAIS PAIS;
BEGIN
/* Asignamos valores a los campos de la variable.

*/
miPAIS.CO_PAIS := 27;
miPAIS.DESCRIPCION := 'ITALIA';
miPAIS.CONTINENTE := 'EUROPA';


END;

    Los registros pueden estar anidados. Es decir, un campo de un registro puede ser de un tipo de dato de otro registro.


DECLARE
 TYPE PAIS IS RECORD
 (CO_PAIS     NUMBER  ,
  DESCRIPCION VARCHAR2(50),
CONTINENTE  VARCHAR2(20)
 ); 
 TYPE MONEDA IS RECORD
 ( DESCRIPCION VARCHAR2(50),
   PAIS_MONEDA PAIS );
 
 miPAIS PAIS;
 miMONEDA MONEDA;
BEGIN
     /* Sentencias
*/

END;

    Pueden asignarse todos los campos de un registro utilizando una sentencia SELECT. En este caso hay que tener cuidado en especificar las columnas en el orden conveniente según la declaración de los campos del registro. Para este tipo de asignación es muy frecuente el uso del atributo %ROWTYPE que veremos más adelante.


SELECT
CO_PAIS, DESCRIPCION, CONTINENTE
INTO miPAIS
FROM PAISES
WHERE CO_PAIS = 27;

     Puede asignarse un registro a otro cuando sean del mismo tipo:


DECLARE

TYPE
PAIS IS RECORD ...
miPAIS PAIS;
otroPAIS PAIS;
BEGIN

miPAIS.CO_PAIS := 27;
miPAIS.DESCRIPCION := 'ITALIA';
miPAIS.CONTINENTE := 'EUROPA';
otroPAIS := miPAIS;



END;

 
Declaración de registros con el atributo %ROWTYPE


    Se puede declarar un registro basándose en una colección de columnas de una tabla, vista o cursor de la base de datos mediante el atributo %ROWTYPE.

    Por ejemplo, si tengo una tabla PAISES declarada como:


CREATE TABLE PAISES(
CO_PAIS          NUMBER,
DESCRIPCION      VARCHAR2(50),
CONTINENTE  VARCHAR2(20) );

    Puedo declarar una variable de tipo registro como PAISES%ROWTYPE;


DECLARE
miPAIS PAISES%ROWTYPE;
BEGIN
/* Sentencias ... */
END;

     Lo cual significa que el registro miPAIS tendrá la siguiente estructura: CO_PAIS NUMBER, DESCRIPCION VARCHAR2(50), CONTINENTE VARCHAR2(20).

    De esta forma se crea el registro de forma dinamic y se podrán asignar valores a los campos de un registro a través de un select sobre la tabla, vista o cursor a partir de la cual se creo el registro.

 


Inicio | Tutorial PL/SQL Paquetes en PL/SQLTutorial PL/SQLTablas PL/SQL Versión para imprimir Foros de consulta

 
T6... por Anónimo
Respuesta recibida el [15/10/2007 03:03:30]
T6

 
QUE ES UN ROWTYPE... por PATY
Respuesta recibida el [25/10/2007 02:06:14]
QUE ES UN ROWTYPE

 
Forms y Reports por hernan
Respuesta recibida el [12/12/2007 12:45:31]
Esta muy buena este tutorial, habra alguno de Forms o Reports como este, tan bien explicado...

 
me parece.... por martin g
Respuesta recibida el [01/02/2008 01:59:46]
esto seria el struct en c

 
record por jeru
Respuesta recibida el [07/04/2008 06:15:26]
Cordial saludo:

puedo crar un record dentro de una funcion, para poder guardar los resultados de un for donde uso subsrt, para extraer unos valores??

 
registnslpwdro ?????... por Anónimo
Respuesta recibida el [06/06/2008 09:51:41]
registnslpwdro ?????

 
looser por yo
Respuesta recibida el [08/08/2008 09:22:44]
no podes nada

 
Forms y Reports por Borja
Respuesta recibida el [28/08/2008 05:07:43]
Al igual que Hernan me gustaría saber donde puedo encontrar un tutorial de reports y forms tan bien explicado como este. Muchas gracias por compartir tus amplios conocimientos, le haces la programación mucho más fácil a mucha gente

 
ROW%TYPE por JRD
Respuesta recibida el [05/11/2008 03:05:53]
Es una variable que obtiene las mismas caracteristicas de un registro de un objeto 

 
Muy buena explicacion... por Toribio
Respuesta recibida el [27/05/2009 11:21:09]
Muy buena explicacion

 
fallo encontrado por batto
Respuesta recibida el [09/06/2009 08:27:27]
has escrito registnslpwdro en ves de registro, consultalo.
saludos y gracias por los tutoriales, sigue asi.
para paty: eso coge el tipo de una tabla existente

 
pregunta por simple
Respuesta recibida el [22/06/2009 10:57:16]
si una variable se declara como %rowtype se ocupa como tabla ????

 
sobre tutor por aida
Respuesta recibida el [23/07/2009 07:50:06]
como registrar a los estudiantes con su asignacion de tutor y oponente


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Paquetes en PL/SQLTutorial PL/SQLTablas PL/SQL Versión para imprimir

Registros PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 51357 Fecha de publicación: 14/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: 96 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 798 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 753 | Comentarios: 3 | Archivo: Articulos
Visitas: 3158 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14520 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1484 | Comentarios: 3 | Archivo: Articulos
Visitas: 692 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2022 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certifiado de afiliacion por luz mary gerena ... [Actualidad] 2 26/02/2010
Ayuda por Nando ... [ORACLE] 1 12/03/2010
no me acuerdo donde estoy afiliada por girasol ... [Actualidad] 0 12/03/2010
quiero saber a que fondos estoy afiliado en pensiones y cesantias por rigo ... [Actualidad] 7 28/02/2010
pensiones por 29285524 ... [Access] 0 12/03/2010
certificado de porvenir por labar ... [Actualidad] 23 02/03/2010
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 2 10/03/2010
AYUDA COMANDOS BASICOS MSDOS!! por (L)MSDOS(L) ... [MS DOS] 24 12/03/2010
mananis por mananis ... [Actualidad] 0 12/03/2010
CERTIFICADO DE PENSIONES Y CESANTIAS PORVENIR por ABELLO ... [Actualidad] 0 12/03/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 55 10/02/2010
certificado de pensiones y cesantias que me exigen para trabajar por viviana ... [Actualidad] 1 12/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/06/2006 Procedimientos almacenados en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Fundamentos de PL/SQL    forma parte de...Tutorial PL/SQL
05/12/2008 Instalar SQL server enterprise en Vista o XP
22/10/2005 Consultas combinadas. JOINS    forma parte de...Tutorial SQL
22/10/2005 Indices    forma parte de...Tutorial SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL
16/08/2007 Operaciones con conjuntos.    forma parte de...Tutorial de Transact SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]