Curso Oracle PL/SQL Parte 2 (Online)
Definición
PL/SQL (Procedural Language/Structured Query Language) es un lenguaje de programación incrustado en Oracle.
PL/SQL soporta todas las consultas, ya que la manipulación de datos que se usa es la misma que en SQL, incluyendo nuevas características:
El manejo de variables.
Estructuras modulares.
Estructuras de control de flujo y toma de decisiones.
Control de excepciones.
El lenguaje PL/SQL está incorporado en:
Servidor de la base de datos.
Herramientas de Oracle (Forms, Reports, ...).
En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden escribir estos bloques como parte de scripts SQL*Plus.
Los programas o paquetes de PL/SQL se pueden almacenar en la base de datos como otro objeto, y todos los usuarios que estén autorizados tienen acceso a estos paquetes. Los programas se ejecutan en el servidor para ahorrar recursos a los clientes.
Estrategías Pedagógicas
El curso se dictará en línea mediante un tutor el cual mostrará paso a paso los conceptos vistos en la práctica y con aplicaciones reales. Los estudiantes estarán en la capacidad de apreciar los conceptos vistos mediante la práctica directa en la herramienta Oracle SQL *Plus.
Estrategías Pedagógicas
Contenido Temático
- 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
Duración del Curso]
24 Horas ( 60 Minutos Hora)