PL/SQL-Fundamental e Técnicas Avançadas
PL/SQL-FUNDAMENTAL E TÉCNICAS AVANÇADAS
Fundamental
· 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
Tec. Avançadas
- Utilizar subconsultas e operadores SET
- Utilizar técnicas avançadas de recuperação de dados utilizando CUBE, ROLLUP e consultas hierárquicas
- Manipular objetos grandes (LOB)
- Gerenciar dependências de objetos
- Utilizar Packages Oracle
- Funcionalidades SQL e PL/SQL Avançadas
- Conhecer as novas características da versão Oracle 10g
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
· Diretores de Informática
· Gerentes de Informática
· Gerentes de Suporte
· Profissionais do Suporte Técnico
· Programadores
· Web Designers
· Web Developers
· Web Managers
Pré-requisitos: Conhecimento do Curso Lógica de Programação da Documenta ou conhecimento similar da Documenta ou conhecimento similar. É necessário que o aluno tenha desenvoltura no manejo do sistema operacional (copiar, colar, recortar, criar pastas, salvar, renomear). Navegação e utilização da Internet.
Duração: 48 h
Conteúdo Programático:
1- Linguagem PL/SQL, Procedures, Funções, Packages e Database Triggers
Introdução ao PL/SQL
· Linguagem PL/SQL
· Ambiente PL/SQL
· Benefícios do PL/SQL
· Estrutura dos Blocos PL/SQL
· Desenvolvendo Programas 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
· Criando Procedimentos e Funções de Banco de Dados
· Executando Subprogramas
Escrevendo Comandos Executáveis
· Estrutura de um Bloco PL/SQL
· Tipos de Blocos
· Construções de Programas
· Utilização de Variáveis
· Tratando Variáveis em PL/SQL
· Tipos de Variáveis
· Declarando Variáveis PL/SQL
· Regras de Nomenclatura
· Atribuindo Valores para Variáveis
· Utilizando Variáveis e Palavras Chaves
· Tipos de Dados Escalares
· 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 Não 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
· Operadores em PL/SQL
· Diretrizes de Programação
· Convenções de Nomenclatura
· Inventando o Código
· Package DBMS_OUTPUT
· Determine o Escopo das Variáveis
Interagindo com o Servidor Oracle
· Comandos SQL em PL/SQL
· Comandos SELECT em PL/SQL
· Recuperando Dados em PL/SQL
· Manipulando Dados Utilizando PL/SQL
· Inserindo Dados
· Atualizando Dados
· Removendo Dados
· Convenções de Nomenclatura - Cuidados
· Comandos COMMIT e ROLLBACK
· Cursor SQL
· Atributos do Cursor SQL
Escrevendo Estruturas de Controle
· 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
· Comandos IF-THEN-ELSIF
· Construindo Condições Lógicas
· Tabelas de Lógica
· Condições Boleanas
· Comando CASE
· Controle de Repetições: Comandos de LOOP
· LOOP Básico
· FOR LOOP
· WHILE LOOP
· LOOPs Aninhados e Labels
Tipo de Dado Record e Collections
· 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 com Registros
· Nested Tables
· 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
Escrevendo Cursores Explícitos
· Cursores
· Cursores Explícitos
· Controlando Cursores Explícitos
· Declarando o Cursor
· Abrindo um Cursor
· Recuperando Dados do Cursor
· Fechando um Cursor
· Atributos de Cursores Explícitos
· Controlando Múltiplos FETCHs
· Atributo %ISOPEN
· Atributos %NOTFOUND e %ROWCOUNT
· Cursores e Registros
· Cursor FOR LOOP
· Cursor FOR LOOP Utilizando Subconsultas
· Cursores com Parâmetros
· Cláusula FOR UPDATE
· Cláusula WHERE CURRENT OF
Tratamento de Exceções
· Tratando Exceções
· Diretrizes para o Tratamento de Exceções
· Tratando Erros Pré-Definidos do Servidor Oracle
· Interrupções de Programa
· Exceções Pré-definidas Oracle
· SQLCODE e SQLERRM
· Exceções Definidas pelo Desenvolvedor
Procedimentos de Banco de Dados
· Criando Procedimentos de Banco de Dados
· Parâmetros
· Parâmetros IN
· Parâmetros OUT
· Parâmetros IN OUT
· Parâmetros OUT e IN OUT por referência
· Utilizando Múltiplos Parâmetros
· Executando Procedimentos
· Removendo Procedimentos de Banco de Dados
Funções de Banco de Dados
· Criando Funções de Banco de Dados Através do SQL*Plus
· Considerações sobre Funções de Banco de Dados
· Parâmetros em Funções
· Executando Funções
· Removendo Funções de Banco de Dados
· Procedimentos X Funções
Gerenciando Subprogramas
· Gerenciando Procedimentos e Funções - Visão Geral
· Consultando o Código Fonte
· Consultando o Nome e 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 Procedimentos e Funções
· Exemplos de Compilações de Procedimentos e Funções
· Verificando o Status de Procedimentos e Funções
· Re-compilando Procedures e Funções Implicitamente
· Tratamento Explícito de Dependências Remotas
Desenvolvendo e Utilizando Packages
· O Que são Packages
· Desenvolvendo Packages - Visão Geral
· Criando Packages de Banco de Dados
· Criando o Package Body
· Definindo um Procedimento de Única Execução
· Removendo a Package
· Removendo o Package Body
· Invocando Construções de Packages
· Benefícios do Uso de Packages
· Gerenciando Dependências em Packages
Desenvolvendo e Utilizando Database Triggers
· Database Triggers - Visão Geral
· Criando DML Triggers
· Triggers em Nível de Linha e em Nível de Comando
· Ordem 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
· Criando Triggers INSTEAD OF
· Mutating Tables
· Resolvendo o erro de Mutating Tables
· Habilitando e Desabilitando Database Triggers
· Removendo uma Database Trigger
· Gerenciando Database Triggers
· Consultando o Código Fonte de Database Triggers
2- SQL e PL/SQL-técnicas Avançadas
Funções de Data/Horário (TIMESTAMP)
· Entendendo Fusos Horários no Oracle
· Tipo de Dado TIMESTAMP
· TZ_OFFSET
· CURRENT_DATE
· CURRENT_TIMESTAMP
· LOCALTIMESTAMP
· DBTIMEZONE
· SESSIONTIMEZONE
· EXTRACT
· FROM_TZ
· TO_TIMESTAMP
· TO_TIMESTAMP_TZ
Subconsultas
· Utilizando uma Subconsulta para Resolver um Problema
· Subconsultas
· Utilizando uma Subconsulta
· Diretrizes para Utilização de Subconsultas
· Tipos de Subconsultas
· Subconsultas Single-Row
· Executando Subconsultas Single-Row
· Utilizando Funções de Grupo em uma Subconsulta
· Cláusula HAVING com Subconsultas
· Qual o Erro deste Comando?
· Este Comando Funcionará?
· Subconsultas do Tipo Multiple-Row
· Utilizando o Operador ANY em Subconsultas Multiple-Row
· Utilizando o Operador ALL em Subconsultas Multiple-Row
· Subconsultas Multiple-Column
· Utilizando Subconsultas Multiple-Column
· Utilizando uma Subconsulta na Cláusula FROM
Operadores SET
· União – UNION
· Interseção - INTERSECT
· Diferença - MINUS
· Usos Incomuns do Comando SELECT
Aperfeiçoando a Cláusula Group By
· Aperfeiçoando o GROUP BY
· A Função ROLLUP
· A Função CUBE
· Identificando Sub-Grupos
· Usando a Função GROUPING ()
· Usando a Função GROUPING_ID ()
· Usando a Cláusula GROUPING SETS
· Funções Analíticas
· Função RANK ()
· RANK () com particionamento
· Função DENSE_RANK ()
· Função RATIO_TO_REPORT ()
· Função RATIO_TO_REPORT () com particionamento
· Funções LAG () e LEAD ()
SQL Hierárquico
· SQL Hierárquico
· A Pseudocoluna LEVEL
· Ordenando SELECTs Hierárquicos
Expressões Regulares
· Expressões Regulares
· Expressões Regulares no Oracle 10g
· REGEXP_LIKE()
· REGEXP_INSTR()
· REGEXP_REPLACE()
· REGEXP_SUBSTR ()
Database Link
· Acesso Remoto de Dados
· Entendendo Database Link
· Utilizando Database Links
· Criando Database Link
· Exemplo de Criação de Database Link
· Visões do dicionário de dados
Comandos DML Avançado
· Multi Table Insert
· Comando MERGE
SQL Dinâmico em PL/SQL
· Conceito
· Usando SQL Dinâmico
· Porque utilizar SQL Dinâmico?
· O Comando EXECUTE IMMEDIATE
· Utilizando o Comando EXECUTE IMMEDIATE
· Os Comandos OPEN-FOR, FETCH e CLOSE
· Utilizando Seleções Dinâmicas
· Passando Argumentos NULL
Package UTL_FILE
· Package UTL_FILE
· Procedimentos e Funções da Package UTL_FILE
· Utilizando a Package UTL_FILE
Flashback de Objetos
· DBMS_FLASHBACK
· Posicionando-se em um Horário Passado
· Posicionando a Sessão em um SCN Anterior
· Flashback Drop
· Lixeira
· Dropando um objeto
· Restaurando um objeto
· Removendo um objeto definitivamente
· Eliminando os dados da lixeira
· Flashback Table
Package DBMS_SCHEDULER
· Componentes
· Criando, Habilitando, Desabilitando e Removendo um Programa
· Criando e Removendo um Schedule
· Criando, Iniciando, Terminando, Copiando e Removendo um Job
· Visões do Dicionário de Dados
Solicitar Orçamento deste curso!