Contenido Capítulo 1 - Introducción al PL/SQL
1.1.Introducción al PL/SQL
1.1.1.Que es PL/SQL
1.1.2.Los origienes de PL/SQL
1.1.2.1.Los primeros años de PL/SQL
1.1.2.2.Portabilidad de aplicación mejorada
1.1.2.3.Integridad transaccional y ejecución de autoridad mejorada
1.1.2.4.Orígenes humildes, mejora consistente
1.1.3.¿ Que es realmente PL/SQL ?
1.1.3.1.Integración con SQL
1.1.3.2.Control y lógica condicional
1.1.3.3.Que hacer cuando las cosas salen mal
1.1.4.Acerca de las versiones de PL/SQL
1.1.4.1.Nuevas características agregadas en Oracle 11g
1.1.5.Recursos para desarrolladores de PL/SQL
Capítulo 2 - Creando y ejecutando código PL/SQL
2.1.Navegando a través de la base de datos
2.2.Creando y editando código fuente
2.3.SQL*Plus
2.3.1.Iniciando SQL*plus
2.3.2.Corriendo una sentencia SQL
2.3.3.Corriendo un programa PL/SQL
2.3.4.Ejecutando un script
2.3.5.Concepto del directorio actual
2.3.6.Otras tareas del SQL*Plus
2.4.Tareas esenciales en PL/SQL
2.4.1.Creación de un programa almacenado
2.4.2.Ejecución de un programa almacenado
2.4.3.Listado de programas almacenados
2.4.4.Gestión de permisos y sinónimos para programas almacenados
2.4.5.Eliminación de un programa almacenado
2.4.6.Ocultamiento del código fuente de un programa almaceado
2.5.Edición de ambientes para PL/SQL
2.6.Llamado de PL/SQL desde otros lenguajes
2.6.1.C: Mediante el uso del precompilador de Oracle (Pro*C)
2.6.2.Java : mediante el uso de JDBC
2.6.3.Perl : Mediante el uso de PERL DBI y DBD::Oracle
2.6.4.PHP: Mediante uso de las extensiones de Oracle
2.6.5.Páginas de servidor PL/SQL
Capítulo 3 - Fundamentos del Lenguaje
3.1.Estructura de un bloque PL/SQL
3.1.1.Bloques anónimos
3.1.2.Bloques nombrados
3.1.3.Bloques anidados
3.1.4.Alcance
3.1.5.Calificación de todas las referencias a variables y columnas en sentencias SQL
3.1.6.Visibilidad
3.2.Juego de caracteres en PL/SQL
3.3.Identificadores
3.3.1.Palabras reservadas
3.3.2.Espacios en blanco y palabras reservadas
3.4.Literales
3.4.1.NULLs
3.4.2.Comillas simples incrustadas en una cadena literal
3.4.3.Literales numéricos
3.4.4.Literales booleanos
3.5.Delimitador semicolon
3.6.Comentarios
3.6.1.Sintaxis de comentario para una línea
3.6.2.sintaxis de comentario para multiples líneas
3.6.3.La palabra clave PRAGMA
3.6.4.Etiquetas
Capítulo 4 - Condicionales y sentencias de control
4.1.Sentencias IF
4.1.1.La combinación IF-ELSE
4.1.2.La combinación IF-THEN-ELSE
4.1.3.La combinación IF-THEN-ELSIF
4.1.4.Evitar el uso de errores en la sintaxis IF
4.1.5.Sentencias IF anidadas
4.1.6.Evaluación de sentencias
4.2.Sentencias y expresiones CASE
4.2.1.Sentencias CASE simples
4.2.2.Sentencias CASE investigadas
4.2.3.Sentencias CASE anidadas
4.2.4.Expresiones CASE
4.3.La setencia GOTO
4.4.La setencia NULL
4.4.1.Mejorando la lectura de un programa
4.4.2.Uso del NULL después de una etiqueta.
Capítulo 5 - Procesamiento iterativo con ciclos
5.1.Conceptos básicos de los ciclos
5.1.1.Ejemplos de diferentes ciclos
5.1.2.Estructura de un ciclo PL/SQL
5.2.El ciclo simple
5.2.1.Terminando un ciclo simple : EXIT y EXIT WHEN
5.2.2.Emulación de un ciclo REPEAT UNTIL
5.2.3.El ciclo infinito intencional
5.3.El ciclo WHILE
5.4.El ciclo numérico FOR
5.4.1.Reglas para los ciclos numéricos FOR
5.4.2.Ejemplos de ciclos numéricos FOR
5.4.3.Manejo de incrementales no triviales
5.5.El ciclo Cursor FOR
5.5.1.Ejemplos de los ciclos FOR
5.6.Etiquetas de Ciclos
5.7.La sentencia CONTINUE
5.8.Consejos para un procesamiento iterativo
5.8.1.Uso de nombres entendibles para ciclos de índices.
5.9.Formas adecuadas de romper un ciclo
5.10.Obteniendo información acerca de una ejecución de un ciclo FOR
5.11.La setencia SQL como un ciclo
Capítulo 6 - Manejo de Excepciones
6.1.Conceptos básicos y terminología de manejo de excepciones.
6.2.Definición de excepciones
6.2.1.Declaración de excepciones nombradas
6.2.2.Asociación de nombres de excepciones con código de error
6.2.3.Sobre excpeciones de sistema nombradas
6.2.4.Alcance de una excepcion
6.3.Activando una excepción
6.3.1.La setencia RAISE
6.3.2.La setencia RAISE_APPLICATION_ERROR
6.4.Raising Exceptions
6.4.1.Funciones de error incorporadas.
6.4.2.Combinando multiples excepciones en un solo manejador
6.4.3.Excepciones no controladas.
6.4.4.Propagación de errores no controlados.
6.4.5.Continuación de excepciones pasadas.
6.4.6.Escribiendo el código de manejo WHEN OTHERS
6.5.Definición de una efectiva arquitectura de gestión de excepciones
6.5.1.Decisiones sobre una estrategia de gestión de error
6.5.2.Estandarización de manejo de diferentes tipos de excepción
6.5.3.Organización del uso de diferentes códigos de error de aplicación.
6.5.4.Uso de programas estandarizados de gestión de errores
6.5.5.Trabajar con sus propios objetos de excepciones
6.5.6.Creación de plantillas estandares para manejo común de errores.
6.6.Sancado el máximo provecho a la gestión de errores en PL/SQL.
Capítulo 7 - Trabajando con datos de Programa
7.1.Dando un nombre a su programa
7.2.Vista general de los tipos de datos
7.2.1.Caracter de datos
7.2.2.Números
7.2.3.Dates, timestamps e intervalos
7.2.4.Booleanos
7.2.5.Datos binarios
7.2.6.ROWIDs
7.2.7.REF CURSORs
7.2.8.Tipos de datos de internet
7.2.9.Tipos de datos "Any"
7.2.10.Tipos de datos definidos por el usuario
7.3.Declarando datos de programa
7.3.1.Declarando una variable
7.3.2.Declarando constantes
7.3.3.La clausula NOT NULL
7.3.4.Declaraciones ancladas
7.3.5.Anclaje a cursores y tablas
7.3.6.Befiniciones de declaraciones ancladas
7.3.7.Anclaje a tipos de datos NOT NULL
7.4.Subtipos de datos definidos por el programador
7.5.Conversión entre tipos de datos
7.5.1.Conversión de datos implícita
7.5.2.Conversión de datos explícita
Capítulo 8 - Cadenas
8.1.Tipos de datos String
8.1.1.El tipo de datos VARCHAR2
8.1.2.El tipo de dato char
8.1.3.Subtipos de String
8.2.Trabajando con cadenas
8.2.1.Especificando constantes de cadenas
8.2.2.Uso de caracteres no imprimibles
8.2.3.Concatenación de cadenas
8.2.4.Uso de mayúsculas
8.2.5.Búsqueda, extracción y reemplazo de cadenas
8.2.6.Padding
8.2.7.Trimming
8.2.8.Expresiones regulares para búsqueda, extracción y reemplazo de cadenas
8.2.9.Trabajo con cadenas vacias
8.2.10.Mezcla de valores CHAR y VARCHAR2
8.3.Referencia Rápida de las Funciones String
Capítulo 9 - Números
9.1.Tipos de datos numéricos
9.1.1.El tipo NUMBER
9.1.2.El tipo PLS_INTEGER
9.1.3.El tipo BINARY_INTEGER
9.1.4.El tipo SIMPLE_INTEGER
9.1.5.Los tipos BINARY_FLOAT y BINARY_DOUBLE
9.1.6.Los tipos SIMPLE_FLOAT y SIMPLE_DOUBLE
9.1.7.Subtipos numéricos
9.2.Conversiones de números
9.2.1.La función TO_NUMBER
9.2.2.La función TO_CHAR
9.2.3.La función CAST
9.2.4.Conversiones implicitas
9.3.Operadores numéricos
9.4.Funciones numéricas
9.4.1.Funciones de redondeo y truncamiento.
9.4.2.Funciones trigonométricas
9.4.3.Referencias rápida a funciones numéricas
Capítulo 10 - Fechas y Timestamps
10.1.Tipos de datos de fechas
10.1.2.Declaración de variables Datetime
10.1.3.¿ Como elegir un tipo de datos Datetime ?
10.2.Como calcular la fecha y hora actual
10.3.Tipos de datos de Intervalo
10.3.1.Declaración de variables INTERVAL
10.3.2.Cuando utilizar INTERVAL
10.4.Conversiones de fecha y hora
10.4.1.De Cadenas a fechas
10.4.2.De fechas a cadenas
10.4.3.Trabajando con zonas horarias
10.4.4.Requerimiento de un formato de mascara para coincidencia exacta
10.4.5.Coincidencias exactas
10.4.6.Interpretando años de dos digitos en una ventana deslizante
10.4.7.Conviertiendo zonas horarias en cadenas
10.4.8.Padding Output with Fill Mode
10.5.Literales de fecha y timestamp
10.5.1.Conversión de números a literales
10.5.2.Conversión de cadenas a literales
10.5.3.Formato de intervalos para visualización
10.6.CAST y EXTRACT
10.6.1.La función CAST
10.6.2.La función EXTRACT
10.7.Aritmética de fechas
10.7.1.Aritmética de fechas con intervalos y datetimes
10.7.2.Aritmética de fechas con tipos de datos DATE
10.7.3.Calculando los intervalos entre dos fechas.
10.7.4.Uso mezclado del DATE y TIMESTAMP
10.7.5.Sumando y restando Intervalos
10.7.6.Multiplicando y dividiendo intervalos
10.7.7.Uso de tipos INTERVALO sin restricciones
10.8.Referencia rápida a las funciones de fechas
Capítulo 11 - Registros
11.1.Registros en PL/SQL
11.1.1.Beneficios en el uso de registros
11.1.2.Declaración de registros
11.1.3.Registros definidos por el programador
11.1.4.Trabajando con registros
11.1.5.Comparación entre registros
11.1.6.Registros orientados a triggers
Capítulo 12 - Colecciones
12.1.Vista general de colecciones
12.1.1.Conceptos de colecciones y terminología
12.1.2.Tipos de Colecciones
12.1.3.Ejemplos de Colecciones
12.1.4.¿ Cuando se pueden usar colecciones ?
12.1.5.Elección de un tipo de colección
12.2.Métodos de Colecciones (Implícitas)
12.2.1.El método COUNT
12.2.2.El método DELETE
12.2.3.El método EXISTS
12.2.4.El método extent
12.2.5.Los métodos FIRST y LAST
12.2.6.El método LIMIT
12.2.7.Los métodos PRIOR y NEXT
12.2.8.El método TRIM
12.3.Trabajando con colecciones
12.3.1.Declaración de tipos de colecciones
12.3.2.Declaración e inicialización de variables de colecciones
12.3.3.Población de colecciones con datos
12.3.4.Acceso a datos contenidos en una colección
12.3.5.Uso de colecciones indexadas por cadenas.
12.3.6.Colecciones de tipos de datos complejos
12.3.7.Colecciones multinivel
12.3.8.Trabajo con colecciones en SQL
12.4.Nested Table Multiset Operations
12.4.1.Pruebas de igualdad y membresía en tablas anidadas
12.4.2.Chequeo de membresía
12.4.3.Llevando a cabo Operaciones de alto nivel
12.4.4.Manejo de duplicados en tablas anidadas
12.5.Colecciones de mantenimiento a nivel de esquema.
12.5.1.Privilegios necesarios
12.5.2.Colecciones y el diccionario de datos
Capítulo 13 - Tipos de datos Miscelaneos
13.1.El tipo de datos BOOLEAN
13.2.El tipo de dato RAW
13.3.Los tipos de datos UROWID y ROWID
13.3.1.Obteniendo los ROWIDs
13.3.2.Uso de los ROWIDs
13.4.Los tipos de datos LOB
13.5.Trabajando con tipos de datos LOB
13.5.1.Entendimiento de los localizadores de los LOB
13.5.2.LOBS nulos Vs LOB vacios
13.5.3.Escribiendo en un LOB
13.5.4.Leyendo de un LOB
13.5.5.BFILE como marcadores de diferencia
13.5.6.SecureFiles Vs BasicFiles
13.5.7.LOBs temporales
13.5.8.Operaciones LOB Nativas
13.5.9.Funciones de conversión LOB
13.6.Tipos de Objetos predefinidos
13.6.1.El tipo de datos XMLType
13.6.2.Los tipos de datos URI
13.6.3.Los tipos Any
Capítulo 14 - DML y Gestión Transaccional
14.1.DML en PL/SQL
14.1.1.Una introducción rápida a DML
14.1.2.Atributos de Cursor para las operaciones DML
14.1.3.Información RETURNING para sentencias DML
14.1.4.DML y Manejo de excepciones
14.1.5.DML y Registros
14.2.Gestión Transaccional
14.2.1.Las sentencias COMMIT
14.2.2.La setencia ROLLBACK
14.2.3.La setencia SAVEPOINT
14.2.4.La sentencia SET TRANSACTION
14.2.5.La setencia LOCK TABLE
14.3.Transacciones autonomas
14.3.1.Definición de las transacciones autonómas
14.3.2.Reglas y restricciones en las transacciones autonómas
14.3.3.Visiblidad transaccional
14.3.4.Cuando utilizar transacciones autonómas
14.3.5.Construcción de un mecanismo de registro autónomo