Baixe Oracle 9i Curso Completo e outras Manuais, Projetos, Pesquisas em PDF para Informática, somente na Docsity!
Lúcia Fernandes
ORACLE 9 i
CURSO COMPLETO
ORACLE DEVELOPER 6 i
PARA DESENVOLVEDORES
www.axcel.com.br
Pirataria é crime contra os direitos autorais, com penas para os infratores de
acordo com a Lei 9.610 de 19 de fevereiro de 1998.
Este e-book não pode ser vendido e/ou distribuído em CD-ROM, DVD-ROM ou por programas de
compartilhamento P2P. A forma correta de obter este arquivo é adquirindo-o através dos sites da Editora
Axcel ( www.axcel.com.br ) e de Júlio Battisti ( www.juliobattisti.com.br ).
Se você adquiriu este documento através dos meios legais descritos acima, não distribua ou venda este
produto. Você estará cometendo um crime contra o autor da obra.
Se você adquiriu este e-book por intermédio de terceiros, regularize sua situação entrando em contato pelo e-mail
editora@axcel.com.br , para que não seja alvo das penalizações previstas em Lei. Usar cópia ilegal também é
crime de violação dos direitos autorais.
R E P R O D U Ç Ã O P R O I B I D A P E L A L E I D O D I R E I T O A U T O R A L.
SUMÁRIO
CURSO COMPLETO 00 ✦ III
C RÉDITOS
PRODUÇÃO Alexandre Ramires Carlos Alberto Sá Ferreira
R EVISÃO Sandro Gomes dos Santos
ARTE E D IAGRAMAÇÃO Ingo Bertelli
SUPERVISOR DE PRODUÇÃO Carlos Alberto Sá Ferreira
C APA Ingo Bertelli
E DITORA DE P RODUÇÃO Gisella Narcisi
E DITOR RESPONSÁVEL Ricardo Reinprecht
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
IV ✦ 00 CURSO COMPLETO
DEDICATÓRIA
À minha família, que me acompanha a cada dia, no desenvolvimento deste trabalho, e me encoraja a prosseguir, principalmente nos momentos de desânimo. Dedico este livro, portanto, aos meus filhos Davi, Daniel e Gabriel, ao meu esposo Dilson e aos meus pais Lourdes e Milton (em memória). E, também, a uma amiga muito especial, que foi uma grande admiradora do meu trabalho, Lucianita (em memória).
AGRADECIMENTOS
A todos os que me apoiaram antes e durante o desenvolvimento deste trabalho.
A todo o pessoal da Axcel Books, especialmente a Alexandre Ramires, Romero Portela Rodrigues e Ricardo Reinprecht.
Ao amigo Max Guyer, por mais uma vez realizar a revisão do conteúdo técnico de todo o material.
S OBRE A AUTORA
Lúcia Fernandes é arquiteta formada pela Universidade Federal do Rio de Janeiro. Na área de informática, sua atuação foi toda voltada para a área de suporte, especialmente banco de dados. Ministrou diversos treinamentos associados a bancos de dados e linguagens de programação, principalmente relacionados com o ambiente Oracle. Atualmente é Diretora de Suporte e Tecnologia da Relacional Consultoria e Sistemas Ltda.
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
VI ✦ 00 CURSO COMPLETO
Se você já conhece as ferramentas em versões anteriores, o estudo dos Capítulos 7 e 8 terá o objetivo de verificar o que houve de implementação na versão 6i. Não deixe, no entanto, de ler esses capítulos, pois, além das modificações, você encontrará dicas úteis ao longo do texto. No Capítulo 9, você já sabe, encontrará um estudo passo-a-passo para a implementação das aplicações em ambiente Web.
A parte Developer conta com um conjunto de aproximadamente 120 exercícios e 200 figuras e 90 listagens com exemplos. Na parte Referência , você encontrará as propriedades dos objetos do Form e do Report, os menus, as variáveis de sistema, os parâmetros de execução, os triggers e as rotinas dos pacotes internos. Enfim, muita informação para o seu estudo.
Quanto ao desenvolvimento do material, utilizamos a seguinte regra geral: os assuntos são apresentados com uma parte teórica seguida de exemplos que permitam o entendimento prático. Ao final do tópico propomos alguns exercícios para fixação do assunto. Todos os exercícios estão resolvidos ao final de cada capítulo, para que você possa comparar o seu resultado com uma solução.
O material segue uma ordem crescente de dificuldade, isto é, minha expectativa é de que você siga o estudo na ordem proposta, pois o tópico seguinte pressupõe o conhecimento do anterior.
Em relação à convenção sintática apresentada neste livro, utilizamos, basicamente, a mesma encontrada nos manuais da Oracle.
De acordo com essas convenções, as informações entre colchetes – [ ] – são opcionais e as informações entre os símbolos < e > indicam valores a serem substituídos. Por exemplo, Round ( [ , ]) indica que a função Round aceita um ou dois parâmetros e que n deve ser substituído pelo valor que desejamos arredondar. Nesse caso, teríamos opcionalmente Round (1234.87) ou Round (1234.87, 1).
As sintaxes alternativas e/ou as repetitivas são representadas por linhas e pontes como na figura-exemplo a seguir.
Figura – Exemplo de sintaxe
Dentro de cada capítulo veremos trechos das sintaxes, pois estaremos analisando individualmente os assuntos; porém, na parte de anexos, teremos a sintaxe completa com a explicação específica sobre cada opção.
Como recomendação ao leitor interessado em se tornar um desenvolvedor, sugiro que não se atenha apenas à leitura do material. Praticar traz dúvidas que a leitura não traz; portanto refaça todos os testes apresentados, faça outros testes complementares com opções não exemplificadas e tente realizar todos os exercícios de fixação. Duvide e teste!
Dessa forma, você terá condições de tirar suas próprias conclusões sobre as ferramentas apresentadas. Se, após este estudo, você tiver dúvidas, escreva para o e-mail da Editora, a fim de entrar em contato comigo para novas explicações.
Não deixe, também, de obter todos os scripts e aplicativos presentes no livro para que seu estudo seja mais ágil. Faça download em www.axcel.com.br.
Bom estudo!
Lúcia.
SUMÁRIO
CURSO COMPLETO 00 ✦ VII
SUMÁRIO
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
SUMÁRIO
SUMÁRIO
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
ORACLE 9 I PARA DESENVOLVEDORES CURSO COMPLETO
SUMÁRIO
- P ARTE I – FUNDAMENTOS Sumário
- C APÍTULO 1 – INSTALANDO O PERSONAL O RACLE 9 I NO W INDOWS2000
- Fundamentos em: Instalação do Produto
- Requerimentos Para Instalação
- Acompanhando a Instalação
- Localização dos Arquivos
- Produtos Disponíveis
- Tipos de Instalação
- Configuração do Banco de Dados
- Identificação do Banco de Dados
- Local do Arquivo do Banco de Dados
- Conjunto de Caracteres de Banco de Dados
- Resumo
- Fundamentos em: Substituição da Linguagem
- Executando o Regedit
- O Nó Oracle
- Fundamentos em: Criação de um Usuário-Padrão com o SQL*Plus
- Fundamentos em: Criação da Base Relacional
- Modelo de Dados
- Gerando a Base de Dados
- Criando o Atalho Para o SQL*Plus
- Sobre a Base de Dados Objeto-Relacional
- C APÍTULO 2 – SQL E SQL*PLUS
- Fundamentos em: Linguagem SQL
- Dados Históricos
- O Oracle e o SQL
- Banco de Dados Relacional
- A Abrangência da Linguagem
- Linguagem de Manipulação dos Dados (Data Manipulation Language – DML)
- Linguagem de Definição dos Dados (Data Definition Language – DDL)
- Linguagem de Controle dos Dados (Data Control Language – DCL)
- Fundamentos em: Ferramenta SQL*Plus
- Abrindo uma Sessão
- O SQL Buffer
- Os Comandos do SQL*Plus
- Digitando no SQL*Plus
- Comandos de Edição
- List
- Append
- Change
- Del
- Input
- Edit
- Comandos de Execução e de Encerramento
- Run
- / (Barra)
- Exit / Quit
- Describe VIII ✦ 00 CURSO COMPLETO
- Comandos Para Tratamento de Arquivos
- Fundamentos em: Consulta à Base de Dados
- Introdução
- Forma Básica do Comando SELECT
- Restringindo a Consulta
- O Uso de All Versus Distinct ou Unique
- Operadores de Comparação
- Usando And e Or
- Mudando a Precedência das Operações
- Operadores Aritméticos e de Concatenação
- Selecionando um Intervalo de Valores – Between
- Selecionando uma Lista de Valores – In
- Pesquisando o Conteúdo de um Texto – Like
- Pesquisando um Valor Desconhecido – Is Null
- Consultando Dados de uma Tabela Particionada
- Exercícios
- Fundamentos em: Atualização da Base de Dados
- Incluindo Novas Linhas – Insert Básico
- Retornando Informações dos Dados Incluídos
- Alterando Linhas Existentes – Update Básico
- Retornando Informações dos Dados Alterados
- Excluindo Linhas da Base de Dados – Delete Básico
- Retornando Informações dos Dados Excluídos
- Exercícios
- Fundamentos em: Ordenação e Subconsulta
- Usando Apelidos
- Obtendo os Resultados em uma Ordem Específica
- Usando Subquery Para Restringir o Resultado
- Exercícios
- Fundamentos em: Grupamentos
- Funções de Grupo ou de Agregação
- Avg
- Corr
- Count
- Covar_Pop
- Covar_Samp
- Cume_Dist
- Dense_Rank
- First
- Group_Id
- Grouping
- Grouping_id
- Last
- Max
- Min
- Percent_Rank
- Percentile_Cont
- Percentile_Disc
- Rank
- Regr_Avgx CURSO COMPLETO 00 ✦ IX
- Regr_Avgy
- Regr_Count
- Regr_Intercept
- Regr_R2
- Regr_Slope
- Regr_Sxx
- Regr_Sxy
- Regr_Syy
- Stddev
- Stddev_Pop
- Stddev_Samp
- Sum
- Var_Pop
- Var_Samp
- Variance
- Grupando as Linhas Selecionadas
- A Cláusula Having
- As Expressões Rollup e Cube
- Rollup
- Cube
- Identificando as Linhas com as Funções Group
- Exercícios
- Fundamentos em: Modificação do Resultado com Funções
- Introdução
- Numéricas Simples
- Abs
- Bitand
- Ceil
- Exp
- Floor
- Ln
- Log
- Mod
- Power
- Round
- Sign
- Sqrt
- Trunc
- Width_Bucket
- Trigonométricas
- Acos
- Asin
- Atan
- Atan2
- Cos
- Cosh
- Sin
- Sinh
- Tan
- Tanh
- Alfanuméricas
- Chr X ✦ 00 CURSO COMPLETO
- Concat
- Initcap
- Lower
- Lpad
- Ltrim
- Nls_Initcap
- Nls_Lower
- Nls_Upper
- Nlssort
- Replace
- Rpad
- Rtrim
- Soundex
- Substr
- Substrb, Substrc, Substr2, Substr4
- Translate
- Treat
- Trim
- Upper
- Alfanuméricas que Retornam Valores Numéricos
- Ascii
- Instr
- Instrb, Instrc, Instr2, Instr4
- Length
- Lengthb, Lengthc, Length2, Length4
- Datas
- Sysdate
- Add_Months
- Current_Date
- Sessiontimezone
- Current_Timestamp
- Dbtimezone
- Extract
- From_Tz
- LocalTimestamp
- Last_Day
- Months_Between
- New_Time
- Next_Day
- Round
- Sys_Extract_UTC
- SysTimestamp
- Trunc
- Tz_Offset
- Conversão
- AsciiStr
- Bin_To_Num
- Cast
- CharToRowid
- Compose
- Convert
- Decompose
- HexToRaw - Numtodsinterval CURSO COMPLETO 00 ✦ XI - Numtoyminterval - RawToHex, RawToNhex - RowidToChar, RowidToNchar - To_Char - To_Char - To_Clob - To_Date - To_Dsinterval - To_Lob - To_Multi_Byte - To_Nchar - To_Nchar - To_Nchar - To_Nclob - To_Number - To_Single_Byte - To_Timestamp - To_Timestamp_TZ - To_Yminterval - Translate Using - Unistr
- Outras
- Bfilename
- Coalesce
- Decode
- Dump
- Empty_Blob ou Empty_Clob
- ExistsNode
- Extract
- Greatest
- Least
- Nls_Charset _Decl_Len
- Nls_Charset _Id
- Nls_Charset _Name
- NullIf
- Nvl
- Nvl2
- Sys_Connect_By_Path
- Sys_Context
- Sys_DbUriGen
- Sys_Guid
- Sys_Typeid
- Sys_XmlGen
- Sys_XmlAgg
- Uid
- User
- Userenv
- Vsize
- Exercícios
- Fundamentos em: Funções Analíticas
- Introdução
- Funções Somente Analíticas
- First_Value XII ✦ 00 CURSO COMPLETO
- Lag
- Last_Value
- Lead
- Ntile
- Ratio_to_Report
- Row_Number
- Funções de Agregação com uso Analítico
- Exercícios
- Fundamentos em: Revisão das Operações Relacionais
- Introdução
- Seleção ou Restrição
- Projeção
- União
- Interseção
- Diferença
- Produto Cartesiano
- Junção ou Join
- Divisão
- Exercícios
- Fundamentos em: Detalhamento do SQL*Plus
- Comandos de Formatação
- Column
- RepHeader / RepFooter
- Ttitle / Btitle
- Break
- Compute
- Clear
- Spool
- Show
- Comandos Para Controle de Variáveis de Usuário
- Define
- Undefine
- Variable
- Print
- Comandos Para Comunicação com o Usuário
- Modificando Variáveis de Sistema
- Comandos Diversos
- Connect / Disconnect
- Password, Execute, Host e Remark
- Copy
- Timing
- Whenever Oserror / Sqlerror
- Attribute
- Help
- Acionando o SQL*Plus em Batch
- O Menu do SQL*Plus
- Arquivo
- Editar CURSO COMPLETO 00 ✦ XIII
- Procurar
- Opções
- Ajuda
- Exercícios
- Fundamentos em: Consultas Complexas
- Outer Join
- Exists
- Hierarquia
- Subselects Correlacionados
- Views Relacionais
- Uso de Subquery na Cláusula From
- Em Selects
- Em Updates
- Em Inserts
- Em Deletes
- O Comando Merge
- Inclusão Simultânea em Diversas Tabelas
- Usos Incomuns do Comando Select
- Uso de Case no Select
- Exercícios
- Fundamentos em: O Dicionário de Dados do Oracle
- Introdução
- User_Objects
- User_Tables
- User_Tab_Columns
- User_Tab_Partitions
- User_Indexes
- User_Ind_Columns
- User_Ind_Partitions
- User_Constraints
- User_Cons_Columns
- User_Sequences
- User_Synonyms
- User_Users
- User_Views
- User_Updatable_Columns
- User_Types
- User_Type_Attrs
- User_Type_Methods
- User_Nested_Tables
- User_Object_Tables
- User_Lobs
- User_Method_Params
- User_Method_Results
- Exercícios
- Fundamentos em: Uso da Data Control Language
- Comandos Para Controle da Transação
- Transaction
- Commit
- Savepoint
- Rollback
- Read Consistency
- O Segmento de Rollback XIV ✦ 00 CURSO COMPLETO
- Set Transaction Read Only
- Select For Update
- DeadLocks
- Set Constraint
- Comandos Para Controle da Sessão
- Globalization Support
- Características da Globalization Support
- Esquema de Codificação
- Unicode
- Os Characters Sets do Oracle
- Definindo os Parâmetros da Globalization Support
- Alter Session
- Variáveis de Ambiente
- Os Parâmetros NLS em Uso nas Funções SQL
- Exercícios
- Fundamentos em: Index Tables e Large Objects
- Index Tables
- Rowid Lógico
- Comparação Entre Rowids Lógicos e Físicos
- Comparando Index Table e Regular Table
- Benefícios de uma Index-Organized Table
- Large Objects
- Tipos de Lobs
- Locator
- Lob Index
- Comparação Entre Lob e Longs
- Características das Colunas Long e Long Raw
- Características das Colunas Lob
- Manipulação das Colunas Lob em SQL
- Inclusão
- Alteração
- Consultas
- Exercícios
- Fundamentos em: Administração do Banco de Dados
- Introdução
- Schema
- Data Definition Language
- Armazenamento
- Tablespace
- Bloco Oracle
- Segmentos
- Extensão
- Create Table
- Tipos de Dados
- Constraints
- Create Type
- Create Index
- Create Database Link
- Create Synonym
- Create Sequence
- Create Role CURSO COMPLETO 00 ✦ XV
- Create Directory
- Create View
- Create User
- Alter
- Drop
- Truncate Table
- Rename
- Grant
- Grant Para os
- Grant <privilégios de sistema>
- Revoke
- Revoke Para os
- Revoke <privilégios de sistema>
- Exercícios
- Resolução dos Exercícios Propostos
- C APÍTULO 3 – PL/SQL
- Fundamentos em: Linguagem de Programação
- Introdução
- Estrutura
- Modularidade
- Arquitetura
- Vantagens da PL/SQL
- Suporte Para SQL
- Suporte Para Programação Orientada a Objeto
- Performance
- Portabilidade
- Produtividade
- Integração com o Oracle
- Fundamentos em: Características da Linguagem
- Identificadores
- Palavras Reservadas
- Literais
- Número
- Caracter
- String
- Boleano
- Comentários
- Fim de Linha
- Fundamentos em: Tipos de Dados
- Escalares
- Binary_Integer
- Number
- Pls_Integer
- Char
- Varchar2
- Long
- Raw
- Long Raw
- Rowid
- Urowid
- Nchar
- Nvarchar2
- Boolean XVI ✦ 00 CURSO COMPLETO
- Date
- Timestamp
- Timestamp With Time Zone
- Timestamp With Local Time Zone
- Interval Day to Second
- Interval Year to Month
- Lobs
- Compostos
- Reference
- Subtipos Definidos Pelo Usuário
- Conversão Implícita
- Fundamentos em: Declarações
- Introdução
- Variáveis e Constantes
- %Type
- Escopo e Visibilidade
- Qualificação
- Restrições
- Fundamentos em: Comandos Básicos
- Atribuição
- IF
- Select Into
- GoTo
- Null
- Funções
- Funções de SQL Válidas em PL/SQL
- Funções de SQL Inválidas em PL/SQL
- Sqlcode
- SqlErrm
- Case
- Exercícios
- Fundamentos em: Comandos Iterativos
- Cursor
- Declaração
- Abertura
- Fetch
- %Rowtype
- Fechamento
- Cursores Implícitos
- %Found
- %NotFound
- %Isopen
- %Rowcount
- Update Para Cursor
- Delete Para Cursor
- Loop
- While CURSO COMPLETO 00 ✦ XVII
- For Loop
- Cursor Loop
- Exercícios
- Fundamentos em: Tratamento de Erro
- Introdução
- Vantagens das Exceptions
- Definindo Exceptions
- Exceptions Predefinidas
- Causando uma Exception
- O Verbo Raise
- Exception_Init
- A Procedure Raise_Application_Error
- Propagação da Exceção
- As Funções Sqlcode e SqlErrm
- When Others
- Exceptions Adquiridas na Declaração
- Exercícios
- Fundamentos em: Index-By Tables e Registros
- Introdução
- Index-By Tables
- Declaração e Atribuição
- Manipulando Index-By Tables
- Métodos
- Exists
- Count
- Limit
- First e Last
- Prior e Next
- Extend
- Trim
- Delete
- Exceptions Para Coleções
- Criando Matrizes
- Registros
- Declarações
- Referenciando Registros
- Manipulando Registros
- Exercícios
- Fundamentos em: Bulk Binds
- Conceitos
- O Comando ForAll
- A Cláusula Bulk Collect
- O atributo %Bulk_RowCount
- O atributo %Bulk_Exceptions
- Os Demais Atributos
- Características ou Restrições
- Exercícios
- Fundamentos em: Subprogramas
- Conceito
- Características dos Subprogramas
- Parâmetros
- Modos dos Parâmetros
- Passagem de Parâmetro por Referência XVIII ✦ 00 CURSO COMPLETO
- Valor Default
- Notação Posicional e Nomeada Para Passagem dos Parâmetros
- Declarações Forward
- Overloading
- Stored Subprogram
- Uso de Funções em Comandos de SQL
- Verificando Erros de Compilação
- Privilégios em Rotinas Armazenadas
- Usando AuthId Current_User
- Referências Externas
- Cuidados Adicionais
- Uso de Coleções e Registros como Parâmetros de Subprogramas
- Usando Funções Para a Criação de Índices
- Exercícios
- Fundamentos em: Packages
- Conceito
- Package Specification
- Package Body
- Restrições
- Usando Packages
- Usando Pacotes Para Troca de Informações
- Overloading
- Uso de Funções de Pacotes em Comandos SQL
- Nível de Pureza
- Nível de Pureza e Overloading
- Nível de Pureza e Comandos de SQL
- Restrições
- O Argumento Trust
- Alguns Pacotes do Oracle
- Package Standard
- Package Dbms_Standard
- Package Dbms_Output
- Package Dbms_Pipe
- Package Utl_File
- Package Dbms_Sql
- Package Dbms_Alert
- Package Dbms_Random
- Package Dbms_FlashBack
- Package Dbms_Lob
- Package Dbms_Rowid
- Package Utl_Http
- Exercícios
- Fundamentos em: O Package Dbms_Output
- Conceito
- Enable
- Disable
- Put
- New_Line
- Put_Line
- Get_Line
- Get_Lines
- Exemplo Usando o SQL*Plus
- Exemplo Usando Outro Programa CURSO COMPLETO 00 ✦ XIX
- Exercícios
- Fundamentos em: O Pacote Utl_File
- Conceito
- Fopen
- Fopen_Nchar
- Is_Open
- Fclose
- Fclose_All
- Get_Line
- Get_Line_Nchar
- Put
- Put_Nchar
- New_Line
- Put_Line
- Put_Line_Nchar
- Fflush
- Putf
- Putf_Nchar
- Um Exemplo de Leitura
- Um Exemplo de Gravação
- Exercícios
- Fundamentos em: O Pacote Dbms_Pipe
- Introdução
- Pipes Privativos
- Funcionamento do Pacote
- Create_Pipe
- Pack_Message
- Send_Message
- Receive_Message
- Next_Item_Type
- Unpack_Message
- Remove_Pipe
- Purge
- Reset_Buffer
- Unique_Session_Name
- Enviando Dados Para o Pipe
- Recebendo Dados do Pipe
- Exercícios
- Fundamentos em: O Pacote Dbms_Rowid
- Rowid
- O Pacote
- Rowid_Create
- Rowid_Info
- Rowid_Type
- Rowid_Object
- Rowid_Relative_Fno
- Rowid_Block_Number
- Rowid_Row_Number
- Rowid_To_Absolute_Fno
- Rowid_To_Extended
- Rowid_To_Restricted