Curso de Oracle 11g: Fundamentals II - Linguagem PL/SQL
Duração:
24h
Curso Oracle 11g Fundamentals II - Linguagem PL/SQL, Procedures, Funções, Packages e Database Triggers
Objetivos
- Descrever as características e a sintaxe da linguagem PL/SQL
- Controlar o fluxo de código condicionalmente (loops, estruturas de controle e cursores explícitos)
- Administrar erros de momento de execução
- Criar, executar, e manter procedures, funções, packages e triggers
- Este treinamento é aplicável a usuários Oracle 8i, Oracle 9i e Oracle 10g
Pré-requisitos
- Noções de Sistemas Operacionais
- Conhecimentos de Lógica de Programação (curso T@rgetTrust Lógica de Programação)
- Conhecimento em SQL (Curso Oracle 10g/11g - Fundamentos I T@rgetTrust)
Público alvo
- Administradores de Banco de Dados
- Administradores de Dados
- Administradores de Sistema Operacional e Redes
- Analistas de Sistemas
- Arquitetos de Sistemas e Projetistas
- Desenvolvedores de Aplicações
- Gerentes de Informática
- Gerentes de Suporte
- Profissionais do Suporte Técnico
- Programadores
- Web Developers
Conteúdo
1. Introdução ao PL/SQL
- Objetivos
- Linguagem PL/SQL
- Ambiente PL/SQL
- Benefícios do PL/SQL
- Estrutura do PL/SQL
- Desenvolvendo utilizando PL/SQL
- Blocos PL/SQL Anônimos
- Blocos PL/SQL Nomeados: Subprogramas
- Vantagens do Uso de Procedimentos e Funções
- Diferenças entre Subprogramas de Banco de Dados e Subprogramas de Aplicação
- Conectando com o SQL*Plus
- Conectando com o SQLDeveloper
- Utilizando o SQLDeveloper
- Criando Procedimentos e Funções de Banco de Dados
- Executando Subprogramas
2. Construindo Blocos Anônimos e Definindo Identificadores
- Objetivos
- Estrutura de um Bloco PL/SQL
- Tipos de Programas
- Construções de Programas
- Utilização de Variáveis
- Unidades Léxicas
- Identificadores
- Literais
- Controlando Variáveis em PL/SQL
- Tipos de Variáveis
- Tipos de Dados Escalar - Scalar Datatypes
- Declarando Variáveis PL/SQL
- Regras de Nomenclatura
- Atribuindo Valores para Variáveis
- Utilizando Variáveis e Palavras Chaves
- Atributo %TYPE
- Declarando Variáveis com o Atributo %TYPE
- Declarando Variáveis BOOLEAN
- Tipos de Dados Compostos
- Variáveis com Tipos de Dados LOB
- Variáveis Tipo BIND
- Referenciando Variáveis Bind
- Sintaxe e Diretrizes de um Bloco PL/SQL
- Comentando o Código
- Funções SQL em PL/SQL
- Conversão de Tipos de Dados
- Blocos Aninhados e Escopo de Variáveis
- Identificando blocos através de labels
- Operadores em PL/SQL
- Regras de Precedência
- Diretrizes de Programação
- Convenções de Nomenclatura
- Indentação de código
- Package DBMS_OUTPUT
- Determine o Escopo das Variáveis
3. Interagindo com o Banco de Dados Oracle
- Objetivos
- Comandos SQL em PL/SQL
- Comando SELECT em PL/SQL
- Recuperando Dados em PL/SQL
- Manipulando Dados Utilizando PL/SQL
- Comando INSERT em PL/SQL
- Comando Update em PL/SQL
- Comando DELETE em PL/SQL
- Evitando Ambigüidade
- Comandos COMMIT e ROLLBACK
- Cursor SQL
- Atributos do Cursor SQL
4. Escrevendo Estruturas de Controle
- Objetivos
- Operadores em PL/SQL
- Regras de Precedência em PL/SQL
- Tabelas Lógicas
- Condições Boleanas
- Controlando o Fluxo de Execução PL/SQL
- Comando IF
- Comandos IF Simples
- Fluxo de Execução do Comando IF-THEN-ELSE
- Comandos IF-THEN-ELSE
- Fluxo de Execução do Comando IF-THEN-ELSIF
- Condições Lógicas
- Nulos em Expressões e Comparações
- Comando CASE
- Controle de Repetições: Comandos de LOOP
- LOOP Básico
- FOR LOOP
- WHILE LOOP
- LOOPs Aninhados e Labels
5. Tipos Compostos - Records e Collections
- Objetivos
- PL/SQL Records
- Criando um PL/SQL Record
- Referenciando e Inicializando Registros
- Atributo %ROWTYPE
- Vantagens da Utilização de %ROWTYPE
- O que é uma Collection?
- Associative Arrays
- Criando um Associative Array
- Estrutura de um Associative Array
- Utilizando um Associative Array
- Associative Array de Registros
- Nested Table
- Criando uma Nested Table
- Utilizando Nested Tables
- Varrays
- Criando um Varray
- Utilizando Varrays
- Utilizando Métodos de Collections
- Exemplo de utilização dos métodos de Collections
6. Cursores Explícitos
- Objetivos
- Cursores
- Cursores Explícitos
- Controlando Cursores Explícitos
- Contralando o cursor
- Declarando o Cursor
- Abrindo um Cursor
- Recuperando linhas do Cursor
- Fechando um Cursor
- Atributos de Cursores Explícitos
- Controlando Múltiplos FETCHs
- Atributo %ISOPEN
- Atributos %NOTFOUND e %ROWCOUNT
- Cursores e Variáveis records
- Cursor FOR LOOP
- Cursor FOR LOOP Utilizando Subconsultas
- Cursores com Parâmetros
- Cláusula FOR UPDATE
- Cláusula WHERE CURRENT OF
7. Tratamento de Exceções
- Objetivos
- Tratando Exceções
- Diretrizes para o Tratamento de Exceções
- Tratando Erros Pré-Definidos do Servidor Oracle
- Interrupções de Programa
- SQLCODE e SQLERRM
- Exceções Definidas pelo Desenvolvedor
- Tratamento de Erros Oracle utilizando Pragma
8. Procedures de Banco de Dados
- Objetivos
- Criando Procedures de Banco de Dados
- Parâmetros
- Parâmetros tipo IN
- Parâmetros tipo OUT
- Parâmetros tipo IN OUT
- Parâmetros OUT e IN OUT por referência
- Métodos de passagem de Parâmetros
- Executando Procedures
- Removendo Procedures de Banco de Dados
9. Funções de Banco de Dados
- Objetivos
- Criando Funções de Banco de Dados
- Utilizando Funções em comandos SQL
- Utilizando Parâmetros em Funções
- Executando Funções
- Removendo Funções de Banco de Dados
- Comparando Procedures X Funções
10. Gerenciando Subprogramas e Dependências
- Objetivos
- Gerenciando Procedures e Funções - Visão Geral
- Consultando o Código Fonte
- Consultando a Lista de Parâmetros
- Consultando Erros
- Gerenciando Dependências
- Tipos de Dependências
- Tratamento de Dependências Locais Diretas
- Tratamento de Dependências Locais Indiretas
- Re-compilando Procedures e Funções
- Exemplos de Compilações de Procedimentos e Funções
- Verificando o Status de Procedimentos e Funções
- Re-compilando automática de Procedures e Funções
- Tratamento Explícito de Dependências Remotas
11. Desenvolvendo e Utilizando Packages
- Objetivos
- O Que são Packages
- Desenvolvendo Packages - Visão Geral
- Criando Packages de Banco de Dados
- Criando o Package Specification
- Criando o Package Body
- Procedimento de Única Execução
- Removendo Packages
- Removendo o Package Body
- Referenciando Componentes de Packages
- Benefícios do Uso de Packages
- Gerenciando Dependências em Packages
12. Database DML Triggers
- Objetivos
- Database DML Triggers - Visão Geral
- Criando Database DML Triggers
- DML Triggers em Nível de Linha e em Nível de Comando
- Sequência de disparo das Triggers
- Criando uma Trigger em Nível de Comando
- Criando uma Trigger Combinando Vários Eventos
- Triggers em Nível de Linha
- Criando Triggers em Nível de Linha
- Triggers INSTEAD OF
- Mutating Tables
- Regras para Uso de Triggers - Mutanting Tables
- Resolvendo o problema de Mutating Tables
- Habilitando e Desabilitando Database DML Triggers
- Removendo uma Database DML Trigger
- Gerenciando Database Triggers
- Consultando o Código Fonte de Database Triggers
13. Package UTL_FILE
- Objetivos
- Package UTL_FILE
- Procedures e Funções da Package UTL_FILE
- Exceções da package UTL_FILE
- Utilizando a Package UTL_FILE
14. Package UTL_SMTP
- Package UTL_SMTP
- Procedures e Funções da Package UTL_SMTP
- Códigos de Retorno SMTP
- Utilizando a Package UTL_SMTP
Apêndice 1 - Soluções dos Exercícios
Apêndice 2 - Manipulando Objetos Grandes (LOB)
- Tipos de Objetos Grandes (Large Objects - LOB)
- Características Gerais de Campos LOB
- Criando uma Tabela com Campos LOB
- LOBs Internos
- LOBs Externos
- O Alias de Diretório
- Comparação entre Tipos de Dados LOB e LONG
- Trabalhando com LOBs Utilizando SQL
- Trabalhando com LOBs Utilizando PL/SQL:Package DBMS_LOB
- Rotinas da Package DBMS_LOB
- Tipos de Dados da Package DBMS_LOB
- Manipulando LOBs
- Armazenando Arquivos Binários no Banco de Dados
- Removendo LOBs
- Enviando e-mail com conteúdo anexo