Para exibir este conteúdo corretamente, o JavaScript deve ser ativado
  • Título e Informações de Copyright
  • Prefácio
    • Público-alvo
    • Acessibilidade da Documentação
    • Documentos Relacionados
    • Convenções
  • Introdução ao Desenvolvimento de 2 Dias do Oracle Database
    • Sobre Este documento
    • Sobre o Oracle Database
      • Sobre Objetos de Esquema
      • Sobre o Acesso ao Oracle Database
        • Sobre o SQL*Plus
        • Sobre o SQL Developer
        • Sobre o SQL (Structured Query Language)
        • Sobre o Procedural Language/SQL (PL/SQL)
        • Sobre Outros Programas Clientes, Linguagens e Ferramentas de Desenvolvimento
          • Oracle Application Express
          • Oracle JDBC (Java Database Connectivity)
          • PHP (Hypertext Preprocessor)
          • OCI (Oracle Call Interface)
          • OCCI (Oracle C++ Call Interface)
          • ODBC (Open Database Connectivity)
          • Pré-compilador Pro*C/C++
          • Pré-compilador Pro*COBOL
          • Microsoft .NET Framework
          • OraOLEDB (Oracle Provider for OLE DB)
    • Sobre o HR de Esquema de Amostra
  • Estabelecendo Conexão com o Oracle Database e Explorando-o
    • Estabelecendo Conexão com o Oracle Database do SQL*Plus
    • Estabelecendo Conexão com o Oracle Database do SQL Developer
    • Estabelecendo Conexão com o Oracle Database como HR de Usuário
      • Desbloqueando a Conta HR
      • Estabelecendo Conexão com o Oracle Database como Usuário HR a partir do SQL*Plus
      • Estabelecendo Conexão com o Oracle Database como Usuário de RH a partir do SQL Developer
    • Explorando o Oracle Database com SQL*Plus
      • Exibindo Objetos de Esquema do HR com o SQL*Plus
      • Exibindo Propriedades e Dados da Tabela EMPLOYEES com o SQL*Plus
    • Explorando o Oracle Database com o SQL Developer
      • Tutorial: Exibindo Objetos do Esquema de RH com o SQL Developer
      • Tutorial: Exibindo Propriedades e Dados da Tabela EMPLOYEES com o SQL Developer
    • Selecionando Dados de Tabela
      • Sobre Consultas
      • Executando Consultas no SQL Developer
      • Tutorial: Selecionando Todas as Colunas de uma Tabela
      • Tutorial: Selecionando Colunas Específicas de uma Tabela
      • Exibindo Colunas Selecionadas Em Novos Cabeçalhos
      • Selecionando Dados que Satisfazem Condições Especificadas
      • Classificando Dados Selecionados
      • Selecionando Dados de Várias Tabelas
      • Usando Operadores e Funções em Consultas
        • Usando Operadores Aritméticos em Consultas
        • Usando Funções Numéricas em Consultas
        • Usando o Operador de Concatenação·em Consultas
        • Usando Funções do Caractere em Consultas
        • Usando Funções Data/horário em Consultas
        • Usando Funções de Conversão em Consultas
        • Usando Funções Agregadas em Consultas
        • Usando Funções Relacionadas a NULL em Consultas
        • Usando Expressões CASE em Consultas
        • Usando a Função·DECODE em Consultas
  • Sobre as Transações e Instruções DML
    • Sobre Instruções DML (Data Manipulation Language)
      • Sobre a Instrução INSERT
      • Sobre a Instrução UPDATE
      • Sobre a Instrução DELETE
    • Sobre Instruções de Controle de Transações
    • Efetuando Commit de Transações
    • Fazendo Roll Back das Transações
    • Definindo Pontos de Salvamento nas Transações
  • Criando e Gerenciando Objetos do Esquema
    • Sobre Instruções DDL (Data Definition Language)
    • Criando e Gerenciando Tabelas
      • Sobre Tipos de Dados SQL
      • Criando Tabelas
        • Tutorial: Criando uma Tabela com a Ferramenta Criar Tabela
        • Criando Tabelas com a Instrução CREATE TABLE
      • Assegurando a Integridade de Dados nas Tabelas
        • Sobre Restrições
        • Tutorial: Adicionando Restrições a Tabelas Existentes
      • Tutorial: Adicionando Linhas nas Tabelas com a Ferramenta Inserir Linhas
      • Tutorial: Alterando Dados em Tabelas no Painel de Dados
      • Tutorial: Deletando Linhas de Tabelas com a Ferramenta Deletar Linha(s) Selecionada(s)
      • Gerenciando Índices
        • Tutorial: Adicionando um Índice com a Ferramenta Criar Índice
        • Tutorial: Alternando um Índice com a Ferramenta Editar Índice
        • Tutorial: Eliminando um Índice
      • Eliminando Tabelas
    • Criando e Gerenciando Views
      • Criando Views
        • Tutorial: Criando uma View com a Ferramenta Criar View
        • Criando Views com a Instrução CREATE VIEW
      • Alterando Consultas em Views
      • Tutorial: Alterando nomes de visualização com a ferramenta Renomear
      • Eliminando uma View
    • Criando e Gerenciando Sequências
      • Tutorial: Criando uma Sequência
      • Eliminando Sequências
    • Criando e Gerenciando Sinônimos
      • Criando Sinônimos
      • Eliminando Sinônimos
  • Desenvolvendo Pacotes e Subprogramas Armazenados
    • Sobre Subprogramas Armazenados
    • Sobre Pacotes
    • Sobre Identificadores PL/SQL
    • Sobre Tipos de Dados PL/SQL
    • Criando e Gerenciando Subprogramas Standalone
      • Sobre Estrutura de Subprograma
      • Tutorial: Criando um Procedimento Independente
      • Tutorial: Criando uma Função Independente
      • Alterando Subprogramas Stand-alone
      • Tutorial: Testando uma Função Independente
      • Eliminando Subprogramas Standalone
    • Criando e Gerenciando Pacotes
      • Sobre Estrutura de Pacote
      • Tutorial: Criando uma Especificação de Pacote
      • Tutorial: Alterando uma Especificação de Pacote
      • Tutorial: Criando um Corpo de Pacote
      • Eliminando um Pacote
    • Declarando e Designando Valores a Variáveis e Constantes
      • Tutorial: Declarando Variáveis e Constantes em um Subprograma
      • Garantindo que Variáveis, Constantes e Parâmetros Tenham Tipos de Dados Corretos
      • Tutorial: Alterando Declarações para o Uso do Atributo %TYPE
      • Designando Valores a Variáveis
        • Designando Valores a Variáveis com o Operador de Designação
        • Designando Valores a Variáveis com a Instrução SELECT INTO
    • Controlando o Fluxo de Programas
      • Sobre Instruções de Controle
      • Usando a Instrução IF
      • Usando a Instrução CASE
      • Usando a Instrução FOR LOOP
      • Usando a Instrução WHILE LOOP
      • Usando as Instruções Básicas LOOP e EXIT WHEN
    • Usando Registros e Cursores
      • Sobre os Registros
      • Tutorial: Declarando um Tipo de REGISTRO
      • Tutorial: Criando e Chamando um Subprograma com um Parâmetro de Registro
      • Sobre Cursores
      • Usando um Cursor Declarado para Recuperar as Linhas do Conjunto de Resultados Uma de Cada Vez
      • Tutorial: Usando Um Cursor Declarado para Recuperar Linhas do Conjunto de Resultados Uma de Cada Vez
      • Sobre as Variáveis do Cursor
      • Usando uma Variável do Cursor para Recuperar Linhas do Conjunto de Resultados uma de cada vez
      • Tutorial: Usando uma Variável de Cursor para Recuperar Linhas do Conjunto de Resultados Uma por Vez
    • Usando Arrays Associativos
      • Sobre as Coleções
      • Sobre Arrays Associativos
      • Declarando Arrays Associativos
      • Preenchendo Arrays Associativos
      • Percorrendo Arrays Associativos Densos
      • Percorrendo Arrays Associativos Dispersos
    • Tratando Exceções (Erros do Tempo de Execução)
      • Sobre as Exceções e os Handlers de Exceções
      • Quando Usar Handlers de Exceção
      • Tratando as Exceções Predefinidas
      • Declarando e Tratando das Exceções Definidas pelo Usuário
  • Usando Triggers
    • Sobre Triggers
    • Criando Triggers
      • Sobre Pseudorregistros ANTIGOS e NOVOS
      • Tutorial: Criando um Trigger que Registra Alterações de Tabela
      • Tutorial: Criando um Trigger que Gera uma Chave Primária para uma Linha Antes de Ela Ser Inserida
      • Criando um Trigger INSTEAD OF
      • Tutorial: Criando Triggers que Registram Eventos de LOGON e LOGOFF
    • Alterando Triggers
    • Desativando e Ativando Triggers
      • Desativando ou Ativando um Único Trigger
      • Desativando ou Ativando Todos os Triggers em uma Única Tabela
    • Sobre Compilação e Dependências de Trigger
    • Eliminando Triggers
  • Trabalhando em um Ambiente Global
    • Sobre Recursos de Suporte à Globalização
      • Sobre o Suporte a Idiomas
      • Sobre o Suporte a Território
      • Sobre Formatos de Data e Hora
      • Sobre Formatos de Calendário
      • Sobre Formatos Numéricos e Monetários
      • Sobre a Classificação Linguística e a Pesquisa de Strings
      • Sobre a Semântica de Tamanho
      • Sobre Tipos de Dados Unicode e de Caractere Nacional SQL
    • Sobre os Valores do Parâmetro NLS Inicial
    • Exibindo os Valores do Parâmetro NLS
    • Alterando Valores de Parâmetro NLS
      • Alterando Valores de Parâmetro NLS para Todas as Conexões do SQL Developer
      • Alterando Valores de Parâmetro NLS para a Chamada de Função SQL Atual
    • Sobre Parâmetros NLS Individuais
      • Sobre a Localidade e o Parâmetro NLS_LANG
      • Sobre o Parâmetro NLS_LANGUAGE
      • Sobre o Parâmetro NLS_TERRITORY
      • Sobre o Parâmetro NLS_DATE_FORMAT
      • Sobre o Parâmetro NLS_DATE_LANGUAGE
      • Sobre os Parâmetros NLS_TIMESTAMP_FORMAT e NLS_TIMESTAMP_TZ_FORMAT
      • Sobre o Parâmetro NLS_CALENDAR
      • Sobre o Parâmetro NLS_NUMERIC_CHARACTERS
      • Sobre o Parâmetro NLS_CURRENCY
      • Sobre o Parâmetro NLS_ISO_CURRENCY
      • Sobre o Parâmetro NLS_DUAL_CURRENCY
      • Sobre o Parâmetro NLS_SORT
      • Sobre o Parâmetro NLS_COMP
      • Sobre o Parâmetro NLS_LENGTH_SEMANTICS
    • Usando Unicode em Aplicações Globalizadas
      • Representando Strings Literais Unicode em SQL e PL/SQL
      • Evitando Perda de Dados Durante Conversão de Conjunto de Caracteres
  • Criando Aplicativos Eficazes
    • Criando Aplicativos Escaláveis
      • Sobre Aplicativos Escaláveis
      • Usando Variáveis de Bind para Melhorar a Escalabilidade
      • Uso de PL/SQL para Melhorar a Escalabilidade
        • Como o PL/SQL Minimiza a Análise
        • Sobre a instrução EXECUTE IMMEDIATE
        • Sobre Instruções OPEN FOR
        • Sobre o Pacote DBMS_SQL
        • Sobre SQL em Massa
      • Sobre Simultaneidade e Escalabilidade
        • Sobre sequências e simultaneidade
        • Sobre Latches e simultaneidade
        • Sobre Leituras e Gravações sem Bloqueio e Concorrência
        • Sobre SQL Compartilhado e Simultaneidade
      • Limitando o Número de Sessões Simultâneas
      • Comparando Técnicas de Programação com Runstats
        • Sobre Runstats
        • Definindo Runstats
        • Usando Runstats
      • Técnicas de Processamento de Dados e Desempenho do Mundo Real
        • Sobre o Processamento de Dados Iterativos
        • Sobre o Processamento Baseado em Conjunto
    • Práticas de Programação Recomendadas
      • Usar Pacotes de Instrumentação
      • Coleta de Estatísticas e Rastreamento de Aplicativos
      • Usar Funcionalidade Existente
      • Cobrir Tabelas do Banco de Dados com Views de Edição
    • Práticas de Segurança Recomendadas
  • Desenvolvendo um Aplicativo Simples do Oracle Database
    • Sobre o Aplicativo
      • Finalidade da Aplicação
      • Estrutura do aplicativo
        • Objetos de Esquema do Aplicativo
        • Esquemas do Aplicativo
      • Convenções de Nomenclatura no Aplicativo
    • Criando os Esquemas do Aplicativo
    • Concedendo Privilégios aos Esquemas
      • Concedendo Privilégios ao Esquema app_data
      • Concedendo Privilégios ao Esquema app_code
      • Concedendo Privilégios ao Esquema app_admin
      • Concedendo Privilégios aos Esquemas app_user e app_admin_user
    • Criando os Objetos de Esquema e Carregando os Dados
      • Criando as Tabelas
      • Criando Views de Edição
      • Criando Triggers
        • Criando o Trigger para Aplicar a Primeira Regra de Negócios
        • Criando o Trigger para Aplicar a Segunda Regra de Negócios
      • Criando as Sequências
      • Carregando os dados
      • Adicionando a Restrição de Chave Estrangeira
      • Concedendo Privilégios nos Objetos de Esquema aos Usuários
    • Criando o pacote employees_pkg
      • Criando a especificação de pacote para employees_pkg
      • Criando o corpo do pacote para employees_pkg
      • Tutorial: Mostrando como os subprogramas employees_pkg funcionam
      • Concedendo o Privilégio de Execução a app_user e app_admin_user
      • Tutorial: Chamando get_job_history como app_user ou app_admin_user
    • Criando o pacote admin_pkg
      • Criando a especificação de pacote para admin_pkg
      • Criando o corpo do pacote para admin_pkg
      • Tutorial: Mostrando como funcionam os subprogramas admin_pkg
      • Concedendo o Privilégio de Execução a app_admin_user
      • Tutorial: Chamando add_department como app_admin_user
  • Implantando uma Aplicação do Oracle Database
    • Sobre Ambientes de Desenvolvimento e Implantação
    • Sobre scripts de instalação
      • Sobre Instruções DDL e Dependências de Objeto de Esquema
      • Sobre Instruções INSERT e Restrições
    • Criando Scripts de Instalação
      • Criando scripts de instalação com o carrinho
      • Criando um Script de Instalação com o Assistente de Exportação do Banco de Dados
      • Editando scripts de instalação que criam sequências
      • Editando Scripts de Instalação que Criam Acionadores
      • Criando scripts de instalação para o aplicativo de amostra
        • Criando o Script de Instalação schemas.sql
        • Criando objetos de Script de Instalação.sql
        • Criando o Script de Instalação employees.sql
        • Criando admin.sql do Script de Instalação
        • Criando script de instalação mestre create_app.sql
    • Implantando o Aplicativo de Amostra
    • Verificando a Validade de uma Instalação
    • Arquivando os scripts de instalação