ebook img

PL/SQL: Domine a linguagem do banco de dados Oracle PDF

428 Pages·2015·1.551 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview PL/SQL: Domine a linguagem do banco de dados Oracle

CasadoCódigo Prefácio Sempregosteidelivrosque“conversam”comoleitor,principalmenteostéc- nicos. Comosefosseumatrocadeideiasentreoautoreapessoaqueoestá lendo.Procureiescreverdestaforma,poiscreioquecomissoaleiturasetorna maisclaraeamigável, umbatepapoentreamigos, conversandosobrequal- querassunto. Aintençãofoicolocaraquitudooquevocêvaiprecisarsaber sobre a linguagem PL/SQL. O livro aborda conceitos que são utilizados no diaadiadodesenvolvimentoeanálisedesistemasparabancodedadosOra- cle. Demonstreidiversosexemplos,quetambémvãoajudá-locomofontede referênciaparaconsultadecomandosecomoutilizá-los. Tenhaumaotima leitura! Públicoalvo EstelivrosedestinaainicianteseexperientesnalinguagemPL/SQL.Para osiniciantes,sãoabordadosconceitossobreaestruturadalinguagemPL/SQL e suas características. Ele ensina como criar programas, dos mais simples atéosmaiscomplexos,paraatenderàsmaisdiversasnecessidades. Vocêvai aprendercomoestalinguagempodetrazerumaltograudeprodutividadee performanceparaassuasaplicações.Paraosjáexperientes,eleajudarácomo fontedereferênciaepararelembrarconceitosetécnicasdalinguagem. Comoolivroestádividido? Primeiramente,sãoabordadosconceitosbásicosdalinguagem,comosua definição,comoéestruturadaeseusprincipaiscomponentes.Logoapós,en- tramosafundonasuaestrutura,conhecendocadacomandoecadacompo- i CasadoCódigo nentequeelautiliza,explorandosuasfuncionalidadesepropriedades. Oli- vrotambémmostracomoincorporaralinguagemSQLdentrodosprogramas escritos em PL/SQL, para a recuperação e manipulação de dados. Tipos de dados,estruturascondicionaisederepetição,armazenamentodeprogramas atravésdeprocedures(procedimentos)efunctions(funções),emodularização atravésdepackages(pacotes)sãoalgunsdositensmostrados. Todaessaabordagemérealizadanoâmbitoprático,ondesãodetalhadas suasestruturas,seuscomandosecaracterísticas,sempreatravésdeexemplos práticosedefácilcompreensão. Os scripts de base (tabelas e dados) e fontes para a execução dos exemplos do livro estão disponíveis no endereco https://github.com/ eduardogoncalvesbr/livroplsql-casadocodigo. Confiraoutrasobrasdoautor SQL: Uma abordagem para bancos de dados Oracle http://www. casadocodigo.com.br/products/livro-sql-oracle Contatos Para falar com o autor, envie e-mail para eduardogoncal- [email protected] Página no facebook: https://www.facebook.com/ eduardogoncalvesescritor ii CasadoCódigo Sobre o autor FormadoemTecnologiadaInformação,possuimaisde10anosdeexperiên- cia em análise e desenvolvimento de sistema voltados a tecnologias Oracle, trabalhando por grandes empresas como Lojas Renner, Mundial S.A, Tigre S.A,Pernambucanas,TractebelEnergia,PortobelloCeramica,Bematech,en- treoutros. EduardoGonçalvezéinstrutordecursosoficiaisdaOracle–nas linguagensSQLePL/SQL.Tambématuanodesenvolvimentodeaplicações mobileparaaplataformaiOS.Atualmente,atuacomoCoordenadordeOpe- raçõesnaSuperoTecnologia. iii CasadoCódigo Agradecimentos Dedicoestelivroatodasosmeusamigosecolegasdaáreadetecnologia,bem comomeusprofessoresementores,quetiveoprazerdeconhecer,ecomos quaisaprendieatémesmotrabalhei. Duranteestaminhatrajetóriaaprendi muitas coisas com estas pessoas extraordinárias. Trocamos experiências e aprendemosmuito, unscomosoutros, programandoequebrandoacabeça paraescreveralinhadecódigoqueajudasseasolucionarumproblema(re- gadoamuitocafé,namaioriadasvezes... risos),ouatémesmo,apenaspela paixãodeprogramar.Saibamquecadaumdevocêscontribuiuimensamente paraestetrabalho!Semvocêsistonãoseriapossível!Ficamaquimeussince- rosagradecimentos! v CasadoCódigo Sumário Sumário 1 PL/SQL 1 1.1 OqueéPL/SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 PorqueaprenderPL/SQL? . . . . . . . . . . . . . . . . . . . . 2 1.3 SQL,SQL*Plus,PL/SQL:Qualédiferença? . . . . . . . . . . 3 2 Programaçãoembloco 7 3 Primeirospassos 13 3.1 ComoiniciarnoPL/SQL . . . . . . . . . . . . . . . . . . . . . 13 4 Pacotedbms_output 19 4.1 Exceçõesparaopacotedbms_output . . . . . . . . . . . . . . 26 5 Variáveisbindedesubstituição 27 5.1 Variáveisbind . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2 Variáveisdesubstituição . . . . . . . . . . . . . . . . . . . . . 31 5.3 Utilizandovariáveisemarquivos . . . . . . . . . . . . . . . . 35 6 AspectosiniciaisdaprogramaçãoPL/SQL 43 6.1 Caractereseoperadores . . . . . . . . . . . . . . . . . . . . . . 44 6.2 Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.3 Transações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.4 TransaçõesemPL/SQL . . . . . . . . . . . . . . . . . . . . . . 51 6.5 Trabalhandocomvariáveiseconstantes . . . . . . . . . . . . 52 6.6 TiposdedadosemPL/SQL . . . . . . . . . . . . . . . . . . . . 53 vii Sumário CasadoCódigo 7 Exceções 59 7.1 Exceçõespredefinidas . . . . . . . . . . . . . . . . . . . . . . . 60 7.2 Exceçõesdefinidaspelousuário . . . . . . . . . . . . . . . . . 79 8 Estruturasdecondição:if 85 8.1 Estruturasdocomandoif-endif . . . . . . . . . . . . . . . . . 86 8.2 Estruturasdocomandoif-else-endif . . . . . . . . . . . . . . 87 8.3 Estruturasdocomandoif-elsif(-else)-endif . . . . . . . . . . 89 8.4 Formatandoasdeclaraçõesif . . . . . . . . . . . . . . . . . . . 93 8.5 Evitandoerroscomunsnousodeif . . . . . . . . . . . . . . . 94 9 Comandosderepetição 95 9.1 forloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.2 whileloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.3 loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 9.4 Qualloopdeve-seusar? . . . . . . . . . . . . . . . . . . . . . . 105 10 Cursores 107 10.1 Cursoresexplícitos. . . . . . . . . . . . . . . . . . . . . . . . . 108 10.3 Cursorforloopcomdefiniçãointerna . . . . . . . . . . . . . 118 10.4 Cursoresimplícitos . . . . . . . . . . . . . . . . . . . . . . . . 119 10.5 Atributosdecursorexplícitoeimplícito . . . . . . . . . . . . 121 10.6 Cursoresencadeados . . . . . . . . . . . . . . . . . . . . . . . 128 10.7 Cursorcomforupdate . . . . . . . . . . . . . . . . . . . . . . 130 11 Funçõesdecaractereseoperadoresaritméticos 143 11.1 Funçõesdecaracteres . . . . . . . . . . . . . . . . . . . . . . . 144 11.2 Funçõesdecálculos . . . . . . . . . . . . . . . . . . . . . . . . 149 11.3 Operadoresaritméticos . . . . . . . . . . . . . . . . . . . . . . 154 12 Funçõesdeagregação(grupo) 159 13 Funçõesdedata 177 viii CasadoCódigo Sumário 14 Funçõesdeconversão 183 14.1 to_date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 14.2 to_number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 14.3 to_char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 15 Funçõescondicionais 211 15.1 decodevs.case . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 16 Programasarmazenados 225 16.1 proceduresefunctions . . . . . . . . . . . . . . . . . . . . . . 226 16.2 Usodocomandoreplace . . . . . . . . . . . . . . . . . . . . . 236 16.3 Recompilandoprogramasarmazenados . . . . . . . . . . . . 238 16.4 Recuperandoinformações . . . . . . . . . . . . . . . . . . . . 238 16.5 Recuperandocódigos . . . . . . . . . . . . . . . . . . . . . . . 239 16.6 Visualizandoerrosdecompilação . . . . . . . . . . . . . . . . 240 16.7 Passandoparâmetros . . . . . . . . . . . . . . . . . . . . . . . 243 16.8 Dependênciadeobjetos . . . . . . . . . . . . . . . . . . . . . . 249 17 packages 265 17.1 Estruturadeumpackage . . . . . . . . . . . . . . . . . . . . . 266 17.2 Acessoapackages . . . . . . . . . . . . . . . . . . . . . . . . . 270 17.3 Recompilandopackages. . . . . . . . . . . . . . . . . . . . . . 278 17.4 Recuperandoinformações . . . . . . . . . . . . . . . . . . . . 278 17.5 Recuperandocódigos . . . . . . . . . . . . . . . . . . . . . . . 279 17.6 Visualizandoerrosdecompilação . . . . . . . . . . . . . . . . 280 18 Transaçõesautônomas 283 19 Triggers 293 19.1 Triggerdebancodedados . . . . . . . . . . . . . . . . . . . . 294 19.2 Triggerdetabela . . . . . . . . . . . . . . . . . . . . . . . . . . 294 19.3 Triggerdelinha . . . . . . . . . . . . . . . . . . . . . . . . . . 301 19.4 Mutantetable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 19.5 Triggerdesistema . . . . . . . . . . . . . . . . . . . . . . . . . 324 19.6 Triggerdeview . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 ix

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.