SQL Scrips

  • View
    29

  • Download
    0

Embed Size (px)

Text of SQL Scrips

  • 5/13/2018 SQL Scrips

    1/64

    lntroduceo a programa~aoPUSQLMaio 2009

    Marcus [email protected]

    Todos os direitos de copia reservados. Nlio e permitida a distribui~lio fisica ou eletrfmica deste materialsem a permisslio expressa do autor.

    mailto:[email protected]:[email protected]
  • 5/13/2018 SQL Scrips

    2/64

    SumarioApresentacao IVOrganiza~iioTrabalho IVAutor IVPerfil Programador PL/SQL VArquitetura Banco de Dados Oracle V

    1 ComandosSQL 72 Implementando consultas SQL simples 8

    Construcao Basica 8Colunas 8Expressoes Aritmetlcas (Operadores aritmetlcos) 9Operador de Concatenaeao 9

    3 Restringindo e ordenando dados 103.1 Clausula WHERE 10

    Operadores de comparacao 10Operadores Loglcos 11Precedencia 11OrderBy 11

    4 Funcoes de uma linh 12Funeoes de Caracter 12Funeoes Numericas 13Funeoes de Data 13

    4.4Funeoese Conversiio_----,~::-----------------144.4.1 TO_CHAR(X[,'format_model']) 144.4.2 TO_DATE('string','formata~io') 154.5 Expressoes Condicionais Gerais 164.5.1 NVL 164.5.2 DECODE 164.5.3 CASE 16

    Parte I - Comandos SQL

    2.12.22 . 32.4

    3 . 23 . 33 . 43 . 5

    4.14.24 . 3

    5 Mostrando dados de vdrias tabelas 18Produto Cartesiano 18Alias de Tabela 19Outer-JOIN 20Self-JOIN 20

    6 Funfoesdegrupo 217 Subconsultas 23

    Operador IN 24

    5 . 15 . 25 . 35.4

    7.1

  • 5/13/2018 SQL Scrips

    3/64

    7 . 2 Operador ANY 2 47 . 3 Operador ALL 2 4

    8 Manipulando dados (DML) 258 . 1 INSERT 2 58 . 2 UPDATE 2 58 . 3 DELETE 2 6

    9 Controle de transafao 27Parte II - Programac;ao PL/SQL

    10 BlocoPVSQL 2811 Programadio PVSQL 30

    1 1 . 1 Comentarlos 3 01 1 . 2 Declaraeoes (se~iio de declaracao) 3 01 1 . 3 Tipos de Dados 3 11 1 . 4 Assinalar Valores 3 21 1 . 5 Controle de Fluxo 3 211.5.1 IF-THEN 3311.5.2 IF-THEN-ELSE 3311.5.3 IF-THEN-ELSIF 331 1 . 6 Controle de Repetleao 3 411.6.1 LOOP Simples 3411.6.2 WHILE-LOOP 3411.6.3 FOR - LOOP 351 1 . 7 Labels 3 51 1 . 8 Cursores 3 611.8.1 Controlando Cursores Explicitos 3611.8.2 Declarando um Cursor (DECLARE) 3611.8.3 Abrindo um Cursor (OPEN) 3711.8.4 Extraindo dados do Cursor (FETCH) 3711.8.5 Fechando do Cursor (CLOSE) 3711.8.6 Atributos do Cursor Explicito 3811.8.7 LOOP Simples X Cursor 3911.8.8 LOOP While X Cursor 3911.8.9 LOOP For X Cursor 3911.8.10 LOOP For Implicitos 4011.8.11 Cursores Implicitos 40

    12 Tratamento de Exceciio 411 2 . 1 Tratando X Propagando 4 11 2 . 2 Tratamento de Excecoes 4 21 2 . 3 Exceedes PL/SQL Pre-deflnidas ou intern as 4 31 2 . 4 Exceedes PL/SQL definidas pelo Usuario 4 41 2 . 5 Comando RAISE APLLICATION ERROR 4 4_1 2 . 6 Pragma EXCEPTION_INIT 4 51 2 . 7 SQLCODE, SQLERRM 4 5

  • 5/13/2018 SQL Scrips

    4/64

    Parte III - Objetos Procedurais13 Stored Subprograms 4713.1 Stored Procedure 47

    13.1.1 ParametresStored Procedures 4813.1.2 Especificandovalores de parametros 49

    13.2 Stored Function 5013.2.1 Locaispermitidos parauso de Functions 51

    14 Package 5215 Database Trigger 5515.1 Elementos 5515.2 Predicado Condicional 5615.3 Trigger de Linha 56

    15.3.1 Qualificadores (:new, :old) 5615.3.2 Cliusula WHEN 58

    Parte IV - ApendicesA - OracleNet 59A.l - Arquitetura 59A.2 - Conflguraeao 60A.3 - Principais Problemas 61

    B - Schema HR (Human Resource) 63

  • 5/13/2018 SQL Scrips

    5/64

    Apresentac;aoEste material tem a lntencao de mostrar quais S80 os rmrumosconhecimentos necessarlos para a construcao dos primeiros objetos escritos emlinguagem PUSQl como procedures, functons, packages e triggers.Os livros disponiveis no mercado voltados para proqrarnacao Oracle,

    inclusive a docurnententacao oficial, S80 abrangentes e neles contern uma grandequantidade de lnformacoes, que num primeiro momenta podem dificultar 0aprendizado da linguagem PL/SQL. Neste material, sem duvlda, temos apenas 0essencial para a lnlclacao na proqrarnacao PL/SQl, para que esta experlencla sejaraplda e direta.o leitor devera ter conhecimentos fundamentados em 16gica deproqrarnacao, e iniciais de banco de dados relacional, tendo em vista que 0material mostrara como as estruturas de proqrarnacao S80 aplicadas aproqrarnacao PL/SQl quanta a sintaxe.o material foi concebido a luz de varies anos de experiencla atuando emdesenvolvimento para Oracle e apresenta as lnformacoes em uma sequenciapensada adequada para 0 objetivo do material. Faz parte tarnbem do material umarquivo simples de texto com todos os exemplos listados na apostila para evitarredlqitacao dos mesmos.Organizac;ao TrabalhoParte IAbordaremos a construcao das primeiras lnstrucoes SQl, manipulando osdados obtidos atraves de funcoes de linhas e funcoes de grupo. Consultascomplexas com varias tabelas serao abordadas, assim como subqueries,manlpulacao de dados (insert, update, delete) e controle de transacao,Parte IIIniciaremos a proqrarnacao, e sera apresentado como as estruturas deproqrarnacao se comportam no PL/SQl, como se da a rnanlpulacao dos famososcursores PUSQl e finalizando com tratamento de erros. Todas essas atividadesse darao em blocos PL/SQl anonlrnos que S80 a unidade baslca da proqrarnacaoPL/SQL.Parte IIIContinuando a proqramacao, abordaremos a cnacao e compllacao dosprincipais objetos procedurais (procedures, function, package, triggers), conheceras suas especificidades e suas finalidades.Parte IVComo apendlce, porem n80 menos importante, serao mostrados os conceitospara uma correta conflquracao de um software Oracle Client.

    AutorMarcus William, Tecnoloqo em Processamento de Dados, com mais de 10anos na area de TI, convive ha mais de sete anos com produtos Oracle, autodidatano aprendizado da proqrarnacao PL/SQl, foi coordenador dos programadoresPL/SQl em 2000 no DETRAN-PA e atualmente chefia da Dlvlsao de Banco deDados do TJE-PA.

  • 5/13/2018 SQL Scrips

    6/64

    Perfil Programador PLlSQLo programador PUSQL e 0 profissional da area de TI especializado emcriar e manter as construcoes procedurais de um SGDB ORACLE, estes escritosem linguagem PL/SQL. 0 PL/SQL nao e um produto separado, e sim umatecnologia integrada ao SGDB Oracle e esta disponivel desda versao 6.Uma das principais finalidades da linguagem PL/SQL e a construcao deStored Procedures, que sao unidades de rnanlpulacao de dados com scopodefinido de acoes, e estarao disponiveis aos usuarlos do SGDB segundo umapolitica de acesso e privlleqlos customizada. A principal finalidade das StoredProcedures e prover procedimentos armazenados no SGDB de facll utillzacao,aliviando assim, a carga de processamento no cliente. Os principais tipos deStored Procedure se dao na forma de procedure, function e package.Para se criar ou compilar um objeto no Oracle, 0 programador deverasubmeter ao banco 0 comando de crlacao deste objeto, comando este que conteratodos os atributos e inclusive a 16gica prevista para 0 objeto. Se 0 programadortern 0 privileqio de criar os seus objetos, ele 0 tara, caso contrarlo essa tarefa eresponsabilidade do DBA (DataBase Administrator). Uma forma de facilitar este

    trabalho e registrar 0 comando de crlacao em scripts para facll recrlacao quandonecessarlo,E comum escutar "Vamos alterar a procedure". A rigor um objeto proceduralnao e alterado e sim recriado ou recompilado. Se a "alteracao" consiste em apenasna adicao de uma linha, entao todo 0 comando de cornpllacao, adicionado da novalinha, devera ser reapreciado/compilado pelo Oracle.Existem alguns excelentes aplicativos IDE (Integrated DevelopmentEnvironment) que auxiliam a gerencia dos scripts de construcao de objetosprocedurais.Produto Fabricante URLPUSQL Developer Allroundautomations www.allroundautomations.com/glsgldev.htmlSQL Developer Oracle www.oracle.com/technoloov/prod ucts/database/sal developer/index. htmlSQL Navigator Quest www.guest.com/sgl navigator

    Obs.:O programa PUSQL Developer e de prefreneia do autor, nao par aehar mais eficiente e sim parestar aeostumado.

    Arquitetura Banco de Dados OracleE necessarlo para 0 programador PL/SQL entender a estrutura dearmazenamento de objetos disponiveis no Oracle a fim de executar suasatividades.Vamos comecar a entender a dlterenca entre Banco de Dados eInstancia. Em um SGDB Oracle, a rigor, 0 termo Banco de Dados se aplica aosarquivos fisicos que integram 0 mesmo. Assim sendo, em uma conversa com 0suporte Oracle 0 atendente entendera "banco de dados" como os arquivosformadores do Oracle.lnstancla e 0 conjunto de processos de mem6ria armazenados em formavolatil, que sao responsavels pela gerencia de todas as atividades incidente econsequente no banco de dados (arquivos fisicos). Quando um usuarlo cria umaconexao no banco, na realidade ele esta se conectando a uma lnstancla, que Iheservlra de ponte de trabalho ao banco de dados.o schema e uma representacao 16gica organizacional que aglutina umaporcao de objetos do banco de dados. Quando criamos um usuarlo estamostambern criando um schema inicialmente vazio. Em geral, e convencionado que

    http://www.allroundautomations.com/glsgldev.htmlhttp://www.oracle.com/technoloov/prodhttp://www.guest.com/sglhttp://www.guest.com/sglhttp://www.oracle.com/technoloov/prodhttp://www.allroundautomations.com/glsgldev.html
  • 5/13/2018 SQL Scrips

    7/64

    urn ou mais schemas contemplem os objetos de producao de um determinadosistema e que os demais usuarlos criados sejam utilizados apenas para fins deconexao e usa dos objetos dos schemas de producao. Para que isso aconteca,urna politica de privlleqlos devera ser implementada.

    user1SGDB Oracle

    Banco de Dados

    user2 I schema1 ,lnstancia I schema2 ,

    '- 1 S-C-he-m-a-3--- ' ,User3

    user4

    Toda essa arquitetura e de responsabilidade do Administrador de Banco deDados - DBA. E no dia-a-dia, estas deflnlcoes se confundem. N80 e dificilencontrar alquern usando 0 termo banco de dados para uma lnstancla ou umschema. 1550n80 e um pecado. 0

Search related