Después de completar esta lección, debe ser capaz de:  Crear registro definidos por el usuario.  Crear un registro con el atributo %ROWTYPE.  Crear.

Slides:



Advertisements
Presentaciones similares
2 Estructuras lineales.. Qué es una estructura? La estructura es una manera de conectar los valores y de manera automática conectarlos de manera que tengan.
Advertisements

BASE DE DATOS OBJETO RELACIONAL
Introducción a Transact-SQL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Fernando Velasco
U NIDAD 2 L ENGUAJE DE DEFINICIÓN DE DATOS (DDL) 1.
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Consultas anidadas.
MANEJO DE ARRAYS EN C.
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
PL/SQL Francisco Moreno Universidad Nacional.
Teoría de lenguajes y compiladores
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
PL/SQL Francisco Moreno Universidad Nacional.
MySQL M.C. Pedro Bello López.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
D Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Uso de SQL*Plus.
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
Componentes sintácticos
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
Gestión de Objetos con Vistas de Diccionario de Datos
F Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Sintaxis de Unión en Oracle.
UNITA - IBARRA TRIGGERS
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Programación en Pascal
Práctica: Sistema de control de ventas y almacenaje para grandes almacenes 03/12/11.
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Triggers(Disparadores)
Tema 2: Base de datos relacionales
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
INSTRUCCIONES Elaboración de la Presentación:
LENGUAJE SQL.
Bases de Datos Sql.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 14 Uso de Operadores de Conjuntos.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
LENGUAJE ESTRUCTURADO DE CONSULTAS
Lenguaje Estructurado de Consulta
Fundamentos de Programación
Arreglos unidimensionales
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
Estructuras de Control
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
Algorítmica y Programación
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I PL/SQL.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
SQL: DDL.
¿Qué es una base de datos? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Desde.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Copyright  Oracle Corporation, All rights reserved. 12 Otros Objetos de la Base de Datos.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Diapositivas PLSQL ORACLE – Semana 2 Especialización en Desarrollo de soluciones Informáticas Universidad del Cauca Miguel Ángel Niño Zambrano.
6 Triggers ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
6 Copyright © 2004, Oracle. Todos los derechos reservados. Trabajar con Tipos de Dato Compuestos.
Transcripción de la presentación:

Después de completar esta lección, debe ser capaz de:  Crear registro definidos por el usuario.  Crear un registro con el atributo %ROWTYPE.  Crear una tabla INDEX BY.  Crear una tabla de registros INDEX BY.  Describir la diferencia entre registros, tablas y tablas de registros

 Dos tipos: ◦ RECORDS PL/SQL ◦ Colecciones PL/SQL  Tabla INDEX BY  Tabla anidada VARRAY  Contienen componentes internos.  Son reusables.

 Tipos de datos RECORD y TABLE.  Al igual que las variables escalares, las variables compuestas tienen un tipo de datos. Los tipos de datos compuestos (también conocidos como colecciones) son RECORD, TABLE, NESTED TABLE y VARRAY. Usamos el tipo de datos RECORD para tratar como una unidadalógica datos relacionados pero distintos. Usamos la TABLE para referenciar y manipular colecciones de datos como un objeto entero. Los tipos de datos VARRAY Y NESTED TABLE son cubiertos en el curso Advanced PL/SQL.  Un record (registro) es un grupo de datos relacionados almacenados como campos, cada uno posee su propio nombre y tipo de dato. Una tabla contiene una columna y una clave primaria para otorgar un acceso array-like a las filas. Despues de ser definidos, las tablas y registros pueden ser reusados.  Para mayor informacion refierase a PL/SQL User’s Guide and Reference

 Deben contener uno o más componentes de cualquier tipo de dato escalar RECORD o INDEX BY, llamados campos.  Son similares a los registros en un lenguaje de tercera generación (3GL).  No son iguales a las filas una tabla de una BD.  Tratan una colección de campos como una unidad lógica.  Son convenientes para recuperar una fila de datos de una tabla para ser procesada.

 Un record es un grupo de datos relacionados almacenados en campos, cada uno de los cuales posee su nombre y tipo de dato. Un record que contiene campos para nombre, salario, y fecha de contratación de un empleado le permite tratar los datos como una unidad lógica.  Cada record definido puede tener cuantos campos sean necesarios.  Pueden tener valores iniciales asignados y pueden ser definidos como NOT NULL.  La palabra reservado DEFAULT puede ser usada cuando defina los campos.  Puede ser definidos y declarados en la parte declarativa de cualquier bloque, subprograma o paquete.  Puede declarar y referenciar records anidados. Un registro puede ser el componente de otro registro.

 Para crear un registro, define un record y luego declara los registros de tal tipo.  Sintaxis type_namenombre del registro. filed_namenombre del campo dentro del registro. filed typetipo de dato para el campo. (Puede tomar %TYPE, %ROWTYPE) expvalor inicial Sintaxis: TYPE type_name IS RECORD (field_declaration[, field_declaration]…); Identifier type_name; Sintaxis: TYPE type_name IS RECORD (field_declaration[, field_declaration]…); Identifier type_name; Field_name {field_type |variable%TYPE |table.column%TYPE|table%ROWTYPE} [[NOT NULL] {:= | DEFAULT} expr] Field_name {field_type |variable%TYPE |table.column%TYPE|table%ROWTYPE} [[NOT NULL] {:= | DEFAULT} expr]

 Las declaraciones de los campos son como declaraciones de las variables. Cada campo tiene un único nombre y un tipo de dato específico. No hay tipos de datos predefinidos para los registros PL/SQL, como para las variables escalares. Por lo tanto, debe ser creados primero y luego declarar un identificador de tal tipo.  El siguiente ejemplo muestra que puede usar el atributo %TYPE para especificar un tipo de dato para un campo. DECLARE TYPE emp_record_type IS RECORD (employee_idNUMBER(6) NOT NULL :=100, last_nameemployee.last_name%TYPE, job_idemployee.job_id%TYPE); emp_record emp_record_type; …

 Los campos en un registro son accedidos por su nombre. Para referenciar o inicializar un campo individual, usa una notación de puntos con la siguiente sintaxis: record_name.field_name En un bloque o subprograma, los registros son instanciados cuando se entra al bloque o subprograma y dejan de existir cuando se sale.

 Declara en una variable de acuerdo a una colección de una columna en una tabla o vista de BD.  Prefije %ROWTYPE con el nombre de la tabla de la BD.  Los campos en el registro toman el nomber y tipo de datos de las columnas de la tabla o vista.

 Usar el atributo %ROWTYPE cuando no esté seguro de la estructura de la tabla de la base de datos. Usando este atributo tambien asegura que los tipos de datos de las variables declaradas cambian dinámicamente, en caso de cambio de que la tabla usada sea alterada.  Este atributo es particularmente util cuando se quiere recuperar una fila completa. En ausencia de este atributo se debe declarar una variable por cada columna recuperada por la sentencia select *.

 Declarar una variable para almacenar la informacion sobre un departamento de la tabla DEPARTMENTS. dept_recorddepartments%ROWTYPE;  Declarar una variable para almacenar la informacion sobre un empleado de la tabla EMPLOYEES. emp_recordemployees%ROWTYPE;

 Los objetos del tipo tabla son llamados tablas INDEX BY. Son modeladas como (pero no iguales a) tablas de una bd. Usan una clave primaria para proveer un acceso array-like a las filas.  Son similares a un arreglo.  Deben contener dos componentes: ◦ Una clave primaria de tipo BINARY_INTEGER que indice la tabla. ◦ Una columna de datos escalares o records, el cual almacena los elementos de la tabla INDEX BY.  Puede incrementar dinámicamente, porque no tiene restricciones.

 Hay dos pasos involucrados: ◦ Declarar un tipo de tabla TABLE. ◦ Declarar una variable de tal tipo.

DECLARE TYPE ename_table_type IS TABLE OF employees.last_name%TYPE INDEX BY BINARY_INTEGER; TYPE hiredate_table_type IS TABLE OF DATE INDEX BY BINARY_INTEGER; ename_table ename_table_type; hiredate_tablehiredate_table_type; BEGIN ename_table(1) :=‘CAMERON’; hiredate_table(1):=SYSDATE +7; IF ename_table.EXISTS(1) THEN INSERT INTO… … END; /

MetodoDescripcion EXISTS(n)Devuelve TRUE si el elemento de la posicion n en la tabla existe. COUNTRetorna el numero de elementos que una tabla PL/SQL actualmente contiene. FIRST LAST Devuelve el primer y ultimo (el más pequeño y más grande) índice en una tabla PL/SQL. Devuelve NULL si la tabla está vacía. PRIOR(n)Devuelve el número del índice que precede al índice n en una tabla PL/SQL. NEXT(n)Devuelve el número del índice que sigue al índice n en una tabla PL/SQL. TRIMRemueve un elemento del final de una tabla PL/SQL. TRIM(n) remueve n elementos del final de una tabla PL/SQL. DELETEDELETE remueve todos los elementos de una tabla PL/SQL. DELETE(n) remueve n elementos de una tabla PL/SQL. DELETE (m,n) remueve todos los elementos en un rango m …n de una tabla PL/SQL.

En algún momento sólo puede almacenar los detallas de cualquiera de las columnas de una tabla de una BD. Siempre existe la necesidad de almacenar todas las columnas devueltas por una consulta. La Tabla de registros INDEX BY ofrece una solucion a esto. Poque sólo una definicion de una tabla es necesitada para guardar la informacion de todos los campos de una tabla de una BD, la tabla de registros incrementa grandemente la funcionalidad de una tabla INDEX BY. Puede usar el atributo %ROWTYPE para declarar un registro que representa una fila en una tabla de una BD. La diferencia entre el atributo %ROWTYPE y el tipo de dato compuesto RECORD es que RECORD le permite especificar los tipos de datos de los campos en el registro o declarar los campos de su gusto.

 Define una variable TABLE con un tipo de datos PL/SQL permitidos.  Declarar una variable PL/SQL para guardar la información de un departamento. Ejemplo: DECLARE TYPE dept_table_type IS TABLE OF departments%ROWTYPE INDEX BY BINARY_INTEGER; dept_table dept_table_type ; --cada elemento de dept_table es un registro. DECLARE TYPE dept_table_type IS TABLE OF departments%ROWTYPE INDEX BY BINARY_INTEGER; dept_table dept_table_type ; --cada elemento de dept_table es un registro.

SET SERVEROUTPUT ON DECLARE TYPE emp_table_type IS TABLE OF departments%ROWTYPE INDEX BY BINARY_INTEGER; my emp_table emp_table_type; v_count NUMBER(3):=104; BEGIN FOR i IN 100..v_count LOOP SELECT * INTO my_emp_table(i) FROM employees WHERE employee_id = i; END LOOP; FOR i IN my_emp_table.FIRST.. my_emp_table.LAST LOOP DBMS_OUTPUT.PUT_LINE(my_emp_table(i).last_name); END LOOP; END; / SET SERVEROUTPUT ON DECLARE TYPE emp_table_type IS TABLE OF departments%ROWTYPE INDEX BY BINARY_INTEGER; my emp_table emp_table_type; v_count NUMBER(3):=104; BEGIN FOR i IN 100..v_count LOOP SELECT * INTO my_emp_table(i) FROM employees WHERE employee_id = i; END LOOP; FOR i IN my_emp_table.FIRST.. my_emp_table.LAST LOOP DBMS_OUTPUT.PUT_LINE(my_emp_table(i).last_name); END LOOP; END; /

Un registro PL/SQL es una colección de campos individuales que representan a una fila en una tabla. Usando registros puede agrupar los datos en una estructura y luego manipular esta estructura como una entidad o unidad lógica. Esto reduce código, y vuelve al código más fácil de mantener y entender. Al igual que los registros PL/SQL, la tabla es otro tipo de dato compuesto. Las TABLAS INDEX BY son objetos tipo tabla similares a las tablas de una bd. Pero como una pequeña diferencia las tablas usan una clave primaria para otorgar el acceso como a un arreglo (array-like). El tamaño de una tabla INDEX BY esta irrestricto. Pueden tener una columna y una clave primaria. Las columnas pueden tener cualquier tipo de datos, pero la clave primaria debe ser BINARY_INTEGER. La tabla de registros INDEX BY realza la funcionalidad de las tablas INDEX BY, porque solo una definicion de tabla es requerida para guardar la información de todos los campos. Los siguientes métodos ayudan a generalizar código, hacen las colecciones más fáciles de mantener, y vuelven las aplicaciones más fáciles de mantener: EXISTS, COUNT, LIMIT, FIRST y LAST, PRIOR y LAST, TRIM y DELETE. El atributo %ROWTYPE es usado para declarar una variable compuesta cuyo tipo es ele mismo de una fila en una tabla de una BD.