Contenido Capítulo 15 - Retorno de datos
15.1.Conceptos básicos de un Cusor
15.1.1.Algunos terminos en cuanto a retorno de datos
15.1.2.Operaciones típicas de consulta
15.1.3.Introducción a atributos de cursor
15.1.4.Referenciamiento de variables PL/SQL en un Cursor
15.1.5.Como escoger entre cursors implicitos y cursors explicitos
15.2.Cursores Implicitos
15.2.1.Ejemplos de cursores implicitos
15.2.2.Manejo de errores con cursores implícitos
15.2.3.Atributos SQL de cursores implicitos
15.3.Cursores explicitos
15.3.1.Declarando cursores explicitos
15.3.2.Abriendo cursores explicitos
15.3.3.Operaciones fetch desde cursores explicitos
15.3.4.Column Aliases en cursores explicitos
15.3.5.Cierre de cursores explicitos
15.3.6.Atributos de cursores explícitos
15.3.7.Parametros de Cursor
15.4.SELECT...FOR UPDATE
15.4.1.Liberando bloqueos con COMMIT
15.4.2.La clausula WHERE CURRENT OF
15.5.Variables de Cursor y REF CURSORs
15.5.1.Porque las variables de cursor
15.5.2.Similaridades a los cursores estáticos
15.5.3.Declaración de tipos REF CURSOR
15.5.4.Declaración de variables de cursor
15.5.5.Apertura de variables de cursor
15.5.6.Fetching desde variables de cursor
15.5.7.Reglas desde variables de cursor
15.5.8.Pasando variables de cursor como argumentos
15.5.9.Restrcciones de variables de cursor
15.6.Expresiones de cursores
15.6.1.Utilización de expresiones de cursor
15.6.2.Restricción de expresiones de cursor
Capítulo 16 - SQL y PL/SQL Dinámico
16.1.Sentencias NDS
16.1.1.La sentencia EXECUTE IMMEDIATE
16.1.2.La sentencia OPEN FOR
16.1.3.Acerca de los cuatro métodos SQL dinámicos
16.2.Enlace de variables
16.2.1.Modos de argumento
16.2.2.Duplicate placeholders
16.2.3.Paso de valores NULL
16.3.Trabajando con Objetos y colecciones
16.4.PL/SQL Dinámico
16.4.1.Construcción de bloques PL/SQL dinámicos
16.4.2.Reemplazo repetitivo de código con bloques dinámicos
16.5.Recomendaciones para NDS
16.5.1.Usar derechos de invocación para programas compartidos
16.5.2.Antitipo y manejo de errores dinámicos
16.5.3.Utilizar binding en vez de concatenación
16.5.4.Minimizar los peligros de la inyección de código
16.6.Cuando utilizar DBMS_SQL
16.6.1.Procesamiento de cadenas muy largas
16.6.2.Obtención de información sobre las columnas de consultas
16.6.3.Conocer los cuatro métodos SQL dinámicos
16.6.4.Minimizar el parsing de los cursores dinámicos
16.7.Nuevas características incluidas en Oracle 11g
16.7.1.La función DBMS_SQL.TO_REFCURSOR
16.7.2.La función DBMS_SQL.TO_CURSOR
16.7.3.Seguridad mejorada para el DBMS_SQL
Capítulo 17 - Procedimientos, Funciones y Parámetros
17.1.Código modular
17.2.Procedimientos
17.2.1.Llamado a un procedimiento
17.2.2.Encabezado del Procedimiento
17.2.3.Cuerpo del Procedimiento
17.2.4.La etiqueta LABEL
17.2.5.La setencia RETURN
17.3.Funciones
17.3.1.Estructura de una función
17.3.2.El tipo de dato RETURN
17.3.3.La etiqueta END
17.3.4.Llamado a una función
17.3.5.Funciones sin parámetros
17.3.6.El encabezado de una función
17.3.7.El cuerpo de una función
17.3.8.La sentencia RETURN
17.4.Parámetros
17.4.1.Definición de parámetros
17.4.2.Parámetros actuales y formales
17.4.3.Modos de parámetros
17.4.5.Asociación explícita de parámetros actuales y formales en PL/SQL
17.4.6.El Calificador de Parámetro de Modo NOCOPY
17.4.7.Valores por defecto
17.5.Modulos Locales o anidados
17.5.1.Beneficios de la modularización local
17.5.2.Alcance de los módulos locales
17.5.3.Arreglo de código con los módulos locales
17.6.Sobrecarga de módulos
17.6.1.Beneficios de la sobrecarga de módulos
17.6.2.Restricciones de la sobrecarga de módulos
17.6.3.Sobrecarga con tipos numéricos
17.7.Redireccionamiento de declaraciones
17.8.Temas avanzados
17.8.1.Llamado de una función internamente en una sentencia SQL
17.8.2.Funciones para tablas
17.8.3.Funciones determinísticas
17.9.Modularización
Capítulo 18 - Paquetes
18.1.Paquetes
18.1.1.Demostración de las capacidades de los paquetes
18.1.2.Algunos conceptos derivados del uso de los paquetes
18.1.3.Privacidad de diagramación
18.2.Reglas para la construcción de paquetes
18.2.1.La especificación del paquete
18.2.2.El cuerpo del paquete
18.2.3.Inicialización de paquetes
18.3.Reglas para el llamado de elementos empaquetados
18.4.Trabajo con paquetes de datos
18.4.1.A manera global en una singular instancia de Oracle
18.4.2.Datos públicos globales
18.4.3.Cursores empaquetados
18.4.4.Paquetes serializables
18.5.¿ Cuando utilizar paquetes ?
18.5.1.Encapsulamiento de acceso a datos
18.5.2.Evitamiento de literales duros de codificar
18.5.3.Mejoramiento de la usabilidad de características internas
18.5.4.Agrupamiento de forma conjunta la funcionalidad lógica y relacionada
18.5.5.Cache estático de sesión de datos
18.6.Paquetes y tipos de objetos
Capítulo 19 - Triggers (Disparadores)
19.1.DML Triggers
19.1.1.Conceptos de un DML Trigger
19.1.2.Creando un Trigger DML
19.1.3.Un Ejemplo de un Trigger DML
19.1.4.Triggers multiples del mismo tipo
19.1.5.Conceptos varios
19.1.6.Errorres de tablas mutantes
19.1.7.Triggers compuestos : Poniendo todo en un solo lugar
19.2.DDL Triggers
19.2.1.Creación de un trigger DDL
19.2.2.Eventos disponibles
19.2.3.Atributos disponibles
19.2.4.Trabajando con eventos y atributos
19.2.5.Borrado
19.2.6.El trigger INSTEAD OF CREATE
19.3.Triggers de eventos de base de datos
19.3.1.Creando un trigger de evento de base de datos
19.3.2.El trigger STARTUP
19.3.3.El trigger SHUTDOWN
19.3.4.El trigger LOGON
19.3.5.El trigger LOGOFF
19.3.6.El trigger SERVERERROR
19.4.El trigger INSTEAD OF
19.4.1.Creación del trigger INSTEAD OF
19.4.2.Creación del trigger INSTEAD OF INSERT
19.4.3.Creación del trigger INSTEAD OF UPDATE
19.4.4.Creación del trigger INSTEAD OF DELETE
19.4.5.Población de las tablas
19.4.6.Los triggers INSTEAD OF en tablas anidadas
19.5.Los triggers AFTER SUSPEND
19.5.1.Configuración del trigger AFTER SUSPEND
19.5.2.Buscando al trigger actual
19.5.3.La función ORA_SPACE_ERROR_INFO
19.5.4.El paquete DBMS_RESUMABLE
19.5.5.Trapped multiple times
19.6.Mantenimiento de triggers
19.6.1.Deshabilitando, habilitando, y borrando triggers
19.6.2.Creación de triggers deshabilitados
19.6.3.Visualización de triggers
19.6.5.Verificando la validez de un trigger
Capítulo 20 - Manejo de Código PL/SQL
20.1.Gestión de código en la base de datos
20.1.1.Resumen de la vista del diccionario de datos.
20.1.2.Visualización de información sobre objetos almacenados
20.1.3.Utilización del tamaño del programa para la determinación de requerimientos
20.1.4.Obtener propiedades de un código almacenado
20.1.5.Analizar y modificar el estado de un trigger a través de vistas
20.1.6.Analizar la información de argumento
20.1.7.Analizar el identificador de uso (Oracle Database 11g's PL/Scope)
20.2.Gestión de dependencias y recompilación de código
20.2.1.Analisis de dependencias con vistas de diccionario de datos
20.2.2.Dependencia finamente granulada (Base de datos Oracle 11g)
20.2.3.Dependencias remotas
20.2.4.Limitaciones En el modelo de invocación remota de Oracle
20.2.5.Recompilación de unidades de programa inválidos
20.3.Advertencias en tiempo de compilación
20.3.1.Un rápido ejemplo
20.3.2.Permitiendo advertencias en tiempo de compilación
20.3.3.Algunas advertencias utiles
20.4.Prueba de programas PL/SQL
20.4.1.Tecnicas de pruebas typical, tawdry
20.4.2.Advertencia general para las pruebas en código PL/SQL
20.4.3.Pruebas con utPLSQL
20.4.4.Pruebas con Quest Code Tester para Oracle
20.5.Rastreo de ejecución PL/SQL
20.5.1.DBMS_APPLICATION_INFO
20.5.2.Quest Error Manager Tracing
20.5.3.La facilidad DBMS_TRACE
20.6.Depuración de programas PL/SQL
20.6.1.La forma equivocada de depurar
20.6.2.Tips y consejos sobre depuración
20.7.Protección de código almacenado
20.7.1.Restricciones y limitaciones del empaquetamiento
20.7.2.Utilizando el ejecutable empaquetador.
20.7.3.Empaquetado dinámico con el DBMS_DDL
20.7.4.Guías generales para el trabajo con código empaquetado
20.8.Introducción a algunas redefeniciones (Oracle Database 11g)
Capítulo 21 - Optimizando el desempeño en PL/SQL
21.1.Herramientas para la asistencia en optimización
21.1.1.Analisis del uso de memoria
21.1.2.Identificando cuellos de botella en código PL/SQL
21.1.3.Calculando el tiempo transcurrido
21.1.4.Eligiendo el programa mas rápido
21.1.5.Evitando los ciclos infinitos
21.1.6.Advertencias relacionadas con el desempeño
21.2.El compilador optimizador
21.2.1.Vista general de como es que trabaja el compilador
21.2.2.Optimización en tiempo de ejecución para ciclos fetch
21.3.Técnicas de cacheo de datos
21.3.1.Cacheo a nivel de paquete
21.3.2.Cacheo de funciones determinísticas
21.3.3.Cache de función de resultado (Base de datos Oracle 11g)
21.3.4.Resumen de cacheo
21.4.Procesamiento abultado para SQL multifilas
21.4.1.Consultas de alta velocidad con el BULK COLLECT
21.4.2.DML de alta velocidad con el FORALL
21.5.Incrementado el desempeño con funciones de tabla entubadas
21.5.1.Reemplazo de insert basadas en fila con cargas de funciones pipe-lined
21.5.2.Afinamiento de operaciones merge con los pipe-lined functions
21.5.3.Descarga de datos asincrónica con las funciones paralelas pipe-lined
21.5.4.Implicaciones de desempeño sobre el particionamiento de clausulas streaming en funciones paralelas pipe-lined.
21.5.5.Funciones pipe-lined y el optimizador basado en costos
21.5.6.Una palabra final sobre las funciones pipe-lined
21.6.Técnicas especializadas de optimización
21.6.1.Uso del del parametro de mod hint NOCOPY
21.6.2.Utilizando el tipo de datos correcto
21.7.Resúmen de desempeño
Capítulo 22 - I/O y PL/SQL
22.1.Visualización de información
22.1.1.Habiliando el DBMS_OUTPUT
22.1.2.Escribiendo lineas del buffer
22.1.3.Leyendo los contenidos de un buffer
22.2.Leyendo y escribiendo archivos
22.2.1.El parámetro UTL_FILE_DIR
22.2.2.Trabajando con directorios Oracle
22.2.3.Apertura de Archivos
22.2.4.¿ Esta el archivo actualmente abierto ?
22.2.5.Cierre de archivos
22.2.6.Lectura desde archivos
22.2.7.Escritura a archivos
22.2.8.Copia de archivos
22.2.9.Borrado de archivos
22.2.10.Renombrar y mover archivos
22.2.11.Consultar los atributos de un archivo
22.3.Envio de correo
22.3.1.Prerequisitos de Oracle
22.3.2.Configurando la seguridad en la red
22.3.3.Enviando un mensaje de texto plano y corto
22.3.4.Enviando un mensaje de cualquier longitud variable
22.3.5.Enviar un pequeño archivo como archivo adjunto con mensaje incluido
22.3.6.Enviar un archivo pequeño como un archivo adjunto
22.3.7.Adjuntar un archivo de tamaño variable
22.4.Trabajar con datos basados en web (HTTP)
22.4.1.Consultar una página web en pedazos
22.4.2.Consultar y recuperar el contenido de una página web en un LOB
22.4.3.Autenticación utilizando usuario y contraseña HTTP
22.4.4.Consultar una página web encriptada mediante SSL
22.4.5.Enviar datos a una página web via GET o POST
22.4.6.Deshabilitando Cookies o hacer los cookies persistentes
22.4.7.Traer datos de un servidor FTP
22.4.8.Uso de un proxy server
22.5.Otros tipos de I/O disponibles en PL/SQL
22.5.1.Database Pipes, Queues y Alertas
22.5.2.Sockets TCP
22.5.3.Servidor Web de Oracle
Capítulo 23 - Seguridad de Aplicaciones y PL/SQL
23.1.Vista general de seguridad
23.2.Encripción
23.2.1.Longitud de la llave
23.2.2.Algorítmos
23.2.3.Padding y encadenamiento
23.2.4.El paquete DBMS_CRYPTO
23.2.5.Encripción de datos
23.2.6.Encripción de LOBs
23.2.7.Seguridad a nivel de archivos
23.2.8.Desencripción de datos
23.2.9.Desempeño de generación de llaves
23.2.10.Desempeño de gestión de llaves
23.2.11.Cryptographic Hashing
23.2.12.Uso de mensajes de autenticación
23.2.13.Uso del encripción de datos transparente
23.2.14.Encripción del tablespace transparente
23.3.Seguridad a nivel de fila
23.3.1.Para que aprender sobre RLS
23.3.2.Un ejemplo RLS
23.3.3.Uso de políticas dinámicas
23.3.4.Depuración RLS
23.4.Contextos de aplicación
23.4.1.Uso de contextos de aplicación
23.4.2.Seguridad en contextos
23.4.3.Contextos como predicados del RLSs
23.4.4.Identificando no usuario de la base de datos
23.5.Auditoría finamente granulada
23.5.1.Para que aprender sobre FGA
23.5.2.Un ejemplo sencillo FGA
23.5.3.Cuantas columnas de acceso
23.5.4.Chequear el rastro de auditoría
23.5.5.Uso de bind variables
23.5.6.Uso de módulos de manejo
Capítulo 24 - Arquitectura del PL/SQL
24.1.¿ Definición de DIANA ?
24.2.¿ Como es que Oracle ejecuta código PL/SQL ?
24.2.1.Ejemplo
24.2.2.Limitaciones del compilador
24.3.Los paquetes por defecto del PL/SQL
24.4.Modelo de autoridad de ejecución
24.4.1.El modelo de definidor de derechos
24.4.2.El modelo de invocador de derechos
24.4.3.Combinando modelo de derechos
24.5.Compilación condicional
24.5.1.Ejemplos
24.5.2.La directiva Inquiry
24.5.3.La directiva $IF
24.5.4.La directiva $ERROR
24.5.5.Sincronización de código con constantes de paquete
24.5.6.Configuraciones específicas de programa con directivas inquiry
24.5.7.Trabajando con código postprocesado
24.6.PL/SQL e Instancia de Memoria de base de datos
24.6.1.PGA, UGA y CGA
24.6.2.Cursores, memoria y mas
24.6.3.Consejos en reducir el uso de memoria
24.6.4.Que hay que hacer si no hay memoria disponible
24.7.Compilación nativa
24.7.1.Cuando correr el modo interpretativo
24.7.2.Cuando establecer el modo nativo
24.7.3.Compilación nativa y liberamiento de la base de datos
Capítulo 25 - Globalización y Configuración Regional en PL/SQL
25.1.Vista general y terminología
25.2.Unicode Primer
25.2.1.National Character Set Datatypes
25.2.2.Codificación de caracteres
25.2.3.Parametros de Soporte de Globalización
25.2.4.Funciones Unicode
25.3.Semántica de caracteres
25.4.Ordenamiento de Cadenas
25.4.1.Ordenamiento binario
25.4.2.Ordenamiento monolingual
25.4.3.Ordenamineot multilingual
25.5.Retorno de información multilingual
25.5.1.IR y PL/SQL
25.6.Fecha y Hora
25.6.1.Tipos de datos timestamp
25.6.2.Formateo fecha y hora
25.7.Conversión de moneda
25.8.kit de desarrollo para globalización para PL/SQL
25.8.1.UTL_118N paquete de utilidad
25.8.2.UTL_LMS Paquete de gestión de errores
25.8.3.Opciones de implementación GDK
Capítulo 26 - Aspectos de PL/SQL relacionados con Orientación a Objetos
26.1.Introducción a las características de los objetos de Oracle
26.2.Tipos de Objetos por ejemplo
26.2.1.Creando un tipo base
26.2.2.Creando un subtipo
26.2.3.Métodos
26.2.4.Invocando métodos de supertipo en Oracle Database 11g
26.2.5.Almacenamiento, recuperación y uso de objetos persitentes
26.2.6.Evolución y Creación
26.2.7.De vuelta a apuntadores
26.2.8.Datos genéricos : Los tipos ANY
26.2.9.Puedo hacerlo por si mismo
26.2.10.Comparando objetos
26.3.Vistas de Objetos
26.3.1.Ejemplo de un sistema relacional
26.3.2.Vista de objeto con un atributo de colección
26.3.3.Subvista de objeto
26.3.4.Vista de objeto con relación inversa
26.3.5.Triggers INSTEAD
26.3.6.Diferencias entre vistas de objetos y tablas de objetos
26.4.Mantenimiento de tipos de objetos y vistas de objetos
26.4.1.Diccionario de datos
26.4.2.Privilegios
26.5.Conclusión de un desarrollador relacional
Capítulo 27 - Llamado de PL/SQL desde Java
27.1.Oracle y Java
27.2.Alistandose para usar Java desde Oracle
27.2.1.Instalación del Java
27.2.2.Construyendo y compilando código en Java
27.2.3.Asignación de permisos para el desarrollo en Java y ejecución
27.3.Una simple demostración
27.3.1.Encontrando la funcionalidad en Java
27.3.2.Construyendo clases Java personalizadas
27.3.3.Compilando y cargando en Oracle
27.3.4.Construyendo un empaquetado PL/SQL
27.3.5.Borrado de archivos desde PL/SQL
27.4.Uso del loadjava
27.5.Uso del dropjava
27.6.Gestión de Java en la base de datos
27.6.1.El espacio de datos en Java en Oracle
27.6.2.Examinando elementos cargados de Java
27.7.El uso de DBMS_JAVA
27.7.1.LONGNAME: Conversión de nombres largos en Java
27.7.2.GET_,SET_, y RESET_COMPILER_OPTION: Opciones de compilación
27.7.3.SET_OUPUT: Habilitando salida desde Java
27.7.4.EXPORT_SOURCE, EXPORT_RESOURCE, y EXPORT_CLASS
27.7.5.Exportando objetos de esquema
27.8.Publicación y uso de Java en PL/SQL
27.8.1.Especificaciones de llamado
27.8.2.Algunas reglas para especificaciones de llamado
27.8.3.Mapeo de tipos de datos
27.8.4.Llamado de un método Java en SQL
27.8.5.Manejo de excepciones en Java
27.8.6.Extensión de las capacidades de entrada y salida de datos
Capítulo 28 - Procedimientos Externos
28.1.Introducción a Procedimientos Externos
28.1.1.Ejemplo : invocación de un comando de sistema operativo
28.1.2.Arquitectura para procedimientos externos
28.2.La configuración del Oracle Net
28.2.1.Especificando la configuración del Listener
28.2.2.Características de seguridad de la Configuración
28.3.Configuración de modo multihilo
28.4.Creación de una librería Oracle
28.5.Escribiendo la especificación del llamado
28.5.1.La especificación del llamado : Sintaxis general
28.5.2.Mapeo de parámetros :
28.5.3.Mapeo de parámetros : La historia completa
28.5.4.Mas sintaxis : la clausula PARAMETERS
28.5.5.Propiedades de la claúsula PARAMETERS
28.6.Disparar una excepción de un Programa en C
28.7.Agentes no por defecto
28.8.Mantenimiento de procedimientos externos
28.8.1.Dropping Libraries
28.8.2.Diccionario de datos
28.8.3.Reglas y advertencias