Consulting Tecnologia & Sistemas Ltda

Tamanho: px
Começar a partir da página:

Download "Consulting Tecnologia & Sistemas Ltda www.consulting.com.br"

Transcrição

1 Por Edson Almeida Junior Março-2006 Ultima Atualização 11/04/2006

2 2 1. INTRODUÇÃO Introdução Ao desenvolvermos um projeto temos em mente algumas questões para que o sistema implementando satisfaça as nossas necessidades de negócio dentro das nossas limitações de relação custo x benefício. Como Organizar a implementação de um sistema? Como fazer para que sua Administração seja simples? Como garantir um bom Desempenho? Os recursos disponíveis no RDMBS Oracle 10G são ferramentas que, com certeza, nos auxiliarão a obter nossos objetivos. Tudo que será aprendido aqui será compatível com o Oracle 8i, 9i e 10g. PL/SQL Linguagem de procedimentos do Oracle. Através dela podemos criar diversas rotinas de programação, dentre elas, Procedimentos (Procedures), Gatilhos (Triggers) e Funções (Functions). DECLARE EXCEPTION -- Variáveis -- Cursores -- Procedures ou Funções -- Processamento -- Tratamento de Excessões

3 3 Introdução A primeira estrutura na qual um SGBD Relacional estava baseado trazia o SQL puro como única forma de interface com o banco. Usuário SQL Dados RDBMS O perfil de utilização dos bancos de dados relacionais foi evoluindo e essa estrutura, com o passar do tempo, já não respondia às necessidades. Agregou-se então extensões ao SQL que pretendiam responder às novas necessidades adicionando comandos procedurais a linguagem declarativa do SQL. No caso da Oracle essa extensão foi chamada de Procedural Language ( PL/SQL). Usuário SQL+PL Dados RDBMS

4 4 Introdução Recentemente o perfil de utilização evoluiu novamente e nos vemos diante de novas necessidades. Estruturas mais complexas como Banco de Dados Distribuídos, grande quantidade de informação, custo de tráfego em rede e Arquitetura Cliente-Servidor são algumas características desse novo perfil. Na Arquitetura Cliente-Servidor, por exemplo, é muito importante manter o tráfego de rede a um mínimo e aumentar a performance do RDBMS de modo que ele possa atender rapidamente as freqüentes transações solicitadas pelo usuário. Com essas especificações, organizar o processamento tornando-se fundamental. Por exemplo, grandes blocos PL/SQL circulando pela rede e sendo compilados e otimizados pelo servidor, a cada nova execução, não é uma boa solução. A melhor idéia é armazenar rotinas dentro do RDBMS e acionar essas rotinas através de chamadas. Em vez de todo um bloco PL/SQL temos circulando pela rede apenas o nome da rotina e seus parâmetros. Além disso o Oracle pode guardar a forma compilada e otimizada dessas rotinas melhorando o tempo de execução. No Oracle7 ou Oracle8 isto é um Procedimento Armazenado, ou STORED PROCEDURE.

5 5 Introdução Usuário SQL+PL+Chamadas a rotinas armazenadas Dados RDBMS Além das vantagens de performance, o uso de Stored Procedures torna o sistema mais modular. As clássicas vantagens de um sistema estruturado: reaproveitamento de código, identificação dos pontos críticos do sistema e facilidade de manutenção ganham agora uma nova abordagem. Neste sentido se torna interessante que o RDBMS suporte melhor o desenvolvimento do que simplesmente armazenar rotinas isoladas. É freqüentemente necessário que diversas rotinas compartilhem as mesmas variáveis globais e que chamam rotinas não diretamente disponíveis para o usuário. No Oracle7 isso é suportado pelo uso de Pacotes, ou PACKAGES. RDBMS Procedure A Usuário Dados Procedure B Variável Global

6 6 Introdução Uma evolução natural nessa tecnologia é tornar o banco de dados mais inteligente. O RDBMS tem o controle de todas as operações sobre os dados, se adicionarmos o conceito de Stored Procedures fica fácil imaginar o banco de dados monitorando determinados eventos e acionando rotinas automáticas. Essas rotinas automáticas servem não só para garantir a integridade do banco de dados mas também garantir as regras inerentes ao negócio. Assim como temos uma chave primária ou uma restrição a um domínio ( constraints primary key e check implementadas pelo RDBMS ), podemos ter, no negócio, restrições que limitem uma venda a uma determinada porcentagem do estoque ou que determinem o limite de crédito de um cliente baseado no seu volume de negócio. Até hoje essas regras eram programadas dentro da aplicação. O programador tinha que se preocupar com elas ao mesmo tempo que criava as rotinas específicas da aplicação. Isso tornava o desenvolvimento mais lento, o código mais difícil de manter e aumentava a possibilidade de erros, além disso uma mudança nas regras de negócio implicava freqüentemente na alteração de vários programas. As rotinas automáticas do Oracle7 ou Oracle8 são chamadas de Gatilhos, ou DATABASE TRIGGERS. RDBMS Usuário SQL Dados Tabelas Triggers

7 7 2. Stored Procedures Criando Stored Procedures Exemplo 1: CREATE PROCEDURE PROCESSAMENTO AS INSERT INTO AUDITORIA ( SYSDATE, 'Termino Normal do Processamento '): COMMIT WORK;

8 8 Criando Stored Procedures Exemplo 2: CREATE OR REPLACE PROCEDURE PROCESSAMENTO IS INSERT INTO AUDITORIA (SYSDATE, 'Termino Normal do Processamento '); COMMIT WORK; EXCEPTION WHEN OTHERS THEN IF... THEN... ELSE ROLLBACK; END IF; END PROCESSAMENTO; Executando Stored Procedures No SQLPLUS: No PL/SQL SQL> EXECUTE PROCESSAMENTO; DECLARE ( declaração de variáveis) ( Instruções) PROCESSAMENTO; (Instruções) No SQLFORMS ( Dentro de um Trigger ou Procedure ) If: BLOCO10.UF = 'CE' Then PROCESSAMENTO; Else ROLLBACK; End If;

9 9 Usando Parâmetros Os nomes e tipos das variáveis usadas como parâmetros devem ser declarados quando a procedure é criada. Na especificação do tipo NÃO deverá constar o tamanho, mas declarações %TYPE e %ROWTYPE são permitidas. Os valores são substituídos em termo de chamada da procedure, variando assim a cada execução. Os parâmetros podem ser: Apenas de Entrada: CREATE PROCEDURE TESTE ( var1 IN Varchar2 ) ou CREATE PROCEDURE TESTE ( var1 Varchar2 ) onde var1 é uma variável de entrada de dados para a procedure. A passagem nesse caso é feita por valor. Esta é a modalidade Default. Apenas de Saída: CREATE PROCEDURE TESTE1 ( var2 OUT Number ) onde var2 é uma variável de retorno de dados da procedure para o ambiente chamador. De Entrada e Saída: CREATE PROCEDURE TESTE3 ( var3 IN OUT Number ) onde var3 é uma variável de compartilhamento de dados entre a procedure e o ambiente chamador. A passagem nesse caso é feita por referência.

10 10 Usando Parâmetros Os diversos tipos de parâmetros podem ser usados juntos em qualquer combinação: OBS: Uma Stored Procedure nunca enxerga qualquer variável do ambiente chamador. Toda a interface entre o chamador e a Stored Procedure é feita através de parâmetros. Exemplo: Criação CREATE PROCEDURE Aumento ( salário IN OUT Number, taxa IN Number, Status OUT Number ) AS salário: = salário * taxa; If salário > 5000 Then Status: = 1; Else Status: = 0; End If END Aumento;

11 11 Usando Parâmetros Execução a partir de um bloco PL/SQL DECLARE Cursor c1 Is Select id, salary From Emp for Update of salary; sal Emp.salary%TYPE; For rc1 In c1 Loop Sal := rcl.salary; Aumento(Sal,1.10); If sal < 1500 then Update Emp Set salary = sal Where Current of c1; End If; End Loop; Exercícios 1.Crie uma tabela com o seguinte comando: CREATE TABLE AUDITE ( tipo Varchar2 (10), usuário Varchar2 (10), data Date, texto Varchar2(80); Usando esta tabela crie a Stored Procedure: P_Log ( tipo, texto ). Que incluí uma linha na tabela de log usando a data e usuário corrente. 2. Crie uma Stored Procedure que aumente os valores do salário do empregado passando o ID do empregado. A porcentagem de aumento deve ser passada como parâmetro. ( Use a P_Log()) Ex: P_Aumento (10); Log = > ( 'AUMENTO', 'ALUNO1', 05-JUL-98','Aumento determinado pela direção da empresa') 3. Crie uma Stored Procedure que verifique o salário de cada Empregado e os empregados que tiver o salário menor que 900 e o departamento NAME = 'Operations' promova um aumento de 35% no salário. Gerar na tabela AUDITE o log desta alterações. Ex: P_aumento1 Log => ( 'AUMENTO', 'SCOTT', '05-JUL-98', 'Aumento no departamento Operations, por produtividade') Opcional: 4) Criar uma procedure que altera em 45% o salário dos empregados que são subordinados aos gerentes que não tem comissão.

12 12 3. Functions Criando Functions Exemplo: CREATE OR REPLACE FUNCTION Aumento ( salário Number ) RETURN Number; AS aux Number; aux: = salario * 1.1 ; return(aux); Chamando Functions No SQLPLUS: Não é possível chamar uma função diretamente do prompt do SQLPLUS. Use um bloco PL/SQL. No PL/SQL DECLARE { declaração de variáveis} { Instruções } novosal : = Aumento ( sal_func); {Instruções } No SQLFORMS ( Dentro de um Trigger ou Procedure) If: BLOCO1.CAMPO1 = 'S' Then :BLOCO1NOVOSAL: = Aumento ( : BLOCO1.SALFUNC); Else ROLLBACK; End If:

13 13 Comparando Funções e Procedures Criando: CREATE PROCEDURE Aumento ( salent IN Number, salsaida OUT Number ) AS salsaida: = salent * 1.10; END Aumento; Executando: DECLARE salini Number; salnov Number; { Instruções } Aumento ( salini,salnov); { Instruções } END: Criando: CREATE FUNCTION Aumento ( salent IN Number ) RETURN Number AS aux Number; aux : = salent * 1.10; Return (aux); END Aumento; Executando: DECLARE salini Number; salnov Number; { Instruções } salnov : = Aumento( salini); { Instruções } END:

14 14 Exercícios 1.) Crie uma função que receba o número do telefone no formato (DDDFone) e devolva o número no formato (081) Ex: P_Fone ( )

15 15 4. Tópicos Especiais em Functions e Stored Procedures Transações As Functions e Stored Procedures podem incluir qualquer comando SQL ou PL/SQL, porém uma atenção especial deve ser dada aos comandos de controle de transações. Dê preferência a colocar os comandos de controle de transações ( COMMIT, ROLLBACK, SAVEPOINT ) no ambiente chamador. Caso isto não seja possível use dentro da Stored Procedure, de preferência, apenas comandos SAVEPOINT e ROLLBACK TO savepoint, de modo que não interfira na transação iniciada no chamador. Um modo de lidar com esse problema é fazer a stored_procedure sinalizar uma exception para o ambiente chamador. Isso pode ser feito facilmente usando o comando: raise_application_error ( código, mensagem ) Onde o código do erro deve ser um número entre e e a mensagem deverá ser um texto claro e explicativo da situação do erro. Importante: Caso o ambiente chamador seja um Database Trigger, uma transação distribuída ou o SQL*FORMS, as procedures NÃO podem conter nenhum comando de controle de transação.

16 16 Transações Exemplo de Controle de Transação no chamador: CREATE OR REPLACE PROCEDURE Atualiza ( cod In Number, aumento In Number, status OUT Number ) AS Update tab Set val = val * aumento Where código = cod; If SQL%NOTFOUND Then P_processamento ( 'AVISO', Tentativa de alteração - codigo' to_ char (cod) ' inexistente '); status : = 1; Else status : = 0; End If; END Atualiza; DECLARE status Number { Instruções } atualiza (ID,10,status) If status <> 0 Them Rollback; End If; {Instruções } Commit;

17 17 Saída de Dados Não existem comandos específicos de entrada e saída de dados em blocos PL/SQL. No entanto, foram criadas procedures que suportam saída de informações, permitindo retornar para o vídeo os resultados de selects ou valores de variáveis. Essas procedures enviam informações para um buffer acessível ao SQLPLUS ou SQLDBA que por sua vez podem enviá-las para tela. Para ativar a leitura e impressão desse buffer nesses produtos digite o seguinte comando: SET SERVEROUTPUT ON Utilizando essas procedures torna-se possível executar certas tarefas que em outro caso necessitariam do uso de uma linguagem HOST ( Ex: C, Cobol etc), além disso podemos utilizar o processo de OUTPUT como um Debug rudimentar. Essas procedures são: Nome Descrição DBMS_OUTPUT ( texto); Insere o texto para o buffer de saída DBMS_OUTPUT.NEW_LINE Coloca uma marca de fim de linha no buffer de saída. DBMS_OUTPUT.PUT_LINE Insere o texto e coloca a marca de fim de linha no buffer.

18 18 Saída de Dados Exemplo: SQL> CREATE OR REPLACE PROCEDURE debuge ( taxa Number); AS aux Number; DBMS_OUTPUT.PUT_LINE ( 'Começo de Execução'); Select Sum ( salary) Into aux From emp; aux: = aux *taxa; DBMS_OUTPUT.PUT_LINE ( Valor de aux =>' To_char (aux)); DBMS_OUTPUT.PUT_LINE( 'Fim de Execução'); EXCEPTION When Others Then DBMS_OUTPUT.PUT_LINE( 'Erro na Execução'); SQL> / SQL> SET SERVEROUTPUT ON SQL> EXECUTE Deburgando (1.30); Eliminando Procedures e Functions >> DROP PROCEDURE nome > >> DROP FUNCTION nome > Exemplo: DROP PROCEDURE S_processamanto; DROP FUNCTION aumento;

19 19 Administrando os Objetos - I Ao criarmos qualquer objeto no banco de dados, o Oracle armazena-os em tabelas com views associadas. Essas views são divididas em três categorias ( All, Dba e User ) e através delas obtemos informações deles. Através da view USER_SOURCE é possível recuperar o código do objeto criado: USER_SOURCE ( contém o código do objeto criado ): Name Type Line Text Nome do objeto Tipo de objeto: Function, Procedure, Package, e Package Body Sequencia do Código Texto do Código Exemplo: Para recuperar o texto original da Processamento crie o script source.sql com o seguinte conteúdo: set pagesize 500 set linesize 80 set feedback off set heading off column text format a80 trunc Select Text From User_Source Where Name = 'PROCESSAMENTO' Order By Line; SQL> Spool Proc.sql PROCEDURE processamanto ( vtipo In Varchar2, vtexto In Varchar2 ) AS Insert into audite Values ( vtipo, User, Sysdate, vtexto ) EXCEPTION When Others Then Rollback; End processamanto SQL> Spool Off Obs: Apesar de podermos recuperar o código de uma procedure, function ou package através do dicionário de dados, é aconselhável criarmos um arquivo com seus respectivos códigos.

20 20 Administrando os Objetos - I Através da View USER_ERRORS é possível recuperar que tipo de erro ocorreu durante a criação do objeto: USER_ERRORS ( contém os erros da última compilação ): Name Type Sequence Line Position Text Nome do Objeto Tipo do Objeto: Function, Procedure, Package, e Package Body Sequencia de Erros Linhas do código com Erro Posição do erro na Linha do Código Texto do Erro Exemplo: Caso tentemos criar a procedure processamento com o script: CREATE OR REPLACE PROCEDURE processamento ( vtipo In Varchar2, vtexto In Varchar2) AS Insert into auditori Values ( vtipo, User, Sysdate, vtexto) EXCEPTION When Others Then Rollback; End processamento; Obteremos uma mensagem como: Message 225 not found; product = PLUS31; facility = SP1 Porém se usarmos os comandos a seguir obteremos uma informação bem melhor sobre os erros: set linesize 160 column POS column DESCRIÇÃO format at 150 TRUNC set space 2 select line ' / ' position POS, text DESCRIÇÃO from user_errors; POS DESCRIÇÃO /17 PLS-00201: identifier 'AUDITORI' must be declared 5/5 PL/SQL Statement ignored No exemplo acima o nome correto do Objeto é AUDITE e não AUDITORI Obs: O comando SHOW ERROR tem o mesmo efeito.

21 21 Compilando Ao criarmos uma Procedure ou Function é feita uma compilação desses objetos. Caso seja identificado, no momento execução, que um determinado objeto referenciado sofreu alguma modificação, o programa será recompilado e então executado. Através de seu dicionário de dados o Oracle verifica as relações existentes entre seus objetos. Dessa forma ele verifica os status desses objetos e submete a execução ou recompila e executa. No entanto, quando o objeto referenciado for uma procedure ou function que esteja em um banco de dados remoto, teremos um tratamento ligeiramente diferente após uma alteração nesses objetos. A primeira vez que tentarmos executar a procedure local obteremos uma mensagem de erro, mas na segunda tentativa a recompilação será automática. No caso de uma referência a uma tabela ou outro objeto remoto que não uma function ou procedure NÃO haverá recompilação automática e será necessário submeter as procedures ou functions á uma compilação manual. Importante: Um objeto pode ser referenciado direta ou indiretamente. Um objeto é referenciado diretamente quando uma procedure o cita em seu corpo e indiretamente quando a procedure se utiliza de um terceiro objeto que o manipula. Mesmo os objetos que acessam outros indiretamente necessitariam de uma nova recompilação caso houvesse alteração em qualquer nível. ALTER PROCEDURE nome COMPILE ALTER FUNCTION nome COMPILE Exemplo: SQL> Alter Procedure processamanto Compile SQL> / Procedure Altered

22 22 Administrando as Referências Através da View USER_DEPENDENCIES é possível verificar quais são os objetos referenciados: USER_DEPENDENCIES ( contém as referências do objeto): Name Type Referenced_Owner Referenced_Name Referenced_Type Nome do Objeto Tipo do Objeto: Function, Procedure, Package e Package Body. Dono do Objeto Referenciado Nome do Objeto Referenciado Tipo do Objeto Referenciado Exemplo: 1.) Verificando os objetos diretamente referenciados: SQL> Select Referenced_Owner ESQUEMA, Referenced_Name OBJETO, 2 Referenced_Type TIPO 3 From User_Dependencies 4 Where Name = 'PROCESSAMENTO'; 2) Verificando os objetos indiretamente referenciados. Podemos criar um script chamado List_Ref.sql com: Drop Table Referencia; CREATE Table Referencia AS Select * From User_Dependencies; column Objeto format a25 column Referenciado format a25 column Tipo_Referenciado format a20 Select Lpad (' ',2 * Level) Name Objeto, Referenced_Name Referenciado, Referenced_Type Tipo_Referenciado From Referencia Where Referenced_Owner not in ( 'SYS', 'PUBLIC', 'SYSTEM') Connect by name = prior Referenced_name Start With NAME = 'PROCESSAMENTO'; Execute o script...

23 23 Administrando os Objetos - II Através da View USER_OBJECTS conseguimos identificar qual o status de um determinado objeto após um comando de DDL: Exemplo: USER_OBJECTS( contém o status do comando de DDL): Object_Name Nome do Objeto Object_Id Identificador do Objeto Object_Type Tipo do Objeto Created Data de Criação do Objeto Last_Ddl_Time Data do último Comando de DDL Time_Stamp Status do Objeto: VALID, INVALID Podemos criar o script OBJ.sql com: Column Objeto Format a20 Column Tipo Format a20 Column Status Format a10 Select Object_Name Objeto, Object_Type, Status From user_objects Where Object_Name = 'PROCESSAMENTO'; OBJETO OBJECT_TYPE STATUS PROCESSAMENTO PROCEDURE VALID SQL> Alter Table AUDITE Modify ( Usuário Varchar2 (30)); Table altered OBJETO OBJECT_TYPE STATUS PROCESSAMENTO PROCEDURE INVALID SQL> Alter Procedure PROCESSAMANTO Compile; Procedure altered. OBJETO OBJECT_TYPE STATUS PROCESSAMENTO PROCEDURE VALID

24 24 Sinônimos Para fazermos referências a procedures, functions e packages de forma transparente convém criarmos Sinônimos. Exemplo: SQL> Connect usuário/senha SQL> Execute processamento ( 'Aviso', 'Exemplo de Sinônimo');end; ERROR at line1: ORA-06550: line1, column7: PLS-00313: 'PROCESSAMENTO' not declared in this scope ORA-06550: line1, column7: PL/SQL: Statement ignored SQL> CREATE Synonyn processamento For SCHEMA.processamento; Synonyn created. SQL> Execute processamento( 'Aviso', 'Exemplo de Sinônimo'); PL/SQL procedure successfully completed. Benefícios de Procedures e Functions Controle do acesso aos objetos do Banco de Dados para usuários sem privilégio sobre eles. O usuário não necessita possuir, por exemplo o privilégio de insert em uma tabela caso exista alguma procedure que insira registros nela. Controle da lógica das transações do negócio evitando que erros de programação afetem a integridade e a segurança do banco. Controle de código em um único lugar. Evitar o trabalho do gerenciador para compilar blocos de comandos pois estes já estão compilados. Reaproveitamento do código em memória evitando parses de um mesmo comando ( ou bloco de ) chamado por vários usuários. Redução no número de chamadas do gerenciador, reduzindo tráfego na rede.

25 25 5. Packages Entendendo Packages Package é um objeto do banco de dados que agrupa procedures, funções, variáveis, exceptions e constantes que se relacionam, proporcionando uma melhor organização e visão dos aplicativos que irão utilizar-se desses objetos. Um PACKAGE está dividido em duas partes: -PACKAGE SPECIFICATION ( Definições ) -PACKAGE BODY ( Corpo ) Entendendo Packages DECLARAÇÃO ( Package Specification ): Contém somente as declarações de procedures, funções, variáveis, constantes e exceptions que serão referenciadas posteriormente pelos aplicativos afins. Essas declarações são públicas. A parte declarativa é obrigatória, e através dela é feita a interface com os aplicativos. Um programador que utilize procedimentos do package precisa unicamente das informações contidas nesta parte; nenhum dado a respeito de como as rotinas são implementadas é necessário. Ele recebe informações como os nomes das variáveis declaradas no package ou quais os parâmetros que em uma determinada função recebe. CORPO ( Package Body ): Contém a definição ( código) das procedures, funções, cursores e exceptions declaradas na parte anterior ( declarações públicas ) e qualquer outro objeto necessário para o desenvolvimento do(s) subprograma(s) ( declarações privadas ). Para o desenvolvimento de sistemas esta parte não é obrigatória, ou seja durante o projeto caso não se tenha certeza de como será o fluxo de um programa mas tem-se a idéia de seu objetivo, podemos referenciá-lo apesar do programa não estar completo. Dessa forma é possível criar outros objetos ( procedures, functions, blocos PL/SQL, etc) que utilizam informações que serão codificadas posteriormente.

26 26 Criando Packages CREATE ( OR REPLACE ) PACKAGE nome IS (AS) declarações de procedures declarações de funções declarações de variáveis declarações de cursores declarações de exceptions END nome CREATE ( OR REPLACE) PACKAGE BODY nome IS (AS) procedures funções variáveis cursores exceptions END nome

27 27 Criando Packages Exemplo1 ( somente a parte declarativa) : CREATE OR REPLACE PACKAGE MANTEM AS Usuário Varchar2 (20): = USER; Procedure processamento ( Tipo In Varchar2, Texto In audite.texto%type); END MANTEM; Exemplo2 ( package somente com informações declarativas ): CREATE OR REPLACE PACKAGE empresa AS UsuárioVarchar(20): = USER; Type Recemp Is RECORD ( Código emp.id%type, Nome emp.first_name.%type); Regemp Recemp; Type Recdept Is Record ( Código dept.id%type, Nome dept.name%type, regiao dept.regiao_id%type); Regdept Recdept; END empresa;

28 28 Criando Packages Exemplo3 ( Package completa): CREATE OR REPLACE PACKAGE MANTEM AS Usuário Varchar2(20): = USER; Procedure processamento( Tipo In Varchar2, Texto In audite.texto%type); END MANTEM; CREATE OR REPLACE PACKAGE BODY MANTEM IS PROCEDURE processamento ( vtipo In Varchar2, vtexto In Varchar2) AS Savepoint Safe_Add; Insert into audite Values (vtipo, Usuário, Sysdate, vtexto): EXCEPTION When Others Then Rollback to Safe_Add End Processamento; END MANTEM; OBS: Podemos criar separadamente cada parte de um package.

29 29 Referenciando objetos da Package No SQL/PLUS: SQL> EXECUTE MANTEM.processamento('AVISO', 'Package'); No PL/SQL DECLARE { declaração de variáveis} {Instruções} Select * Into regemp From emp; { Instruções} MANTEM.processamento ( 'AVISO', 'empregados OK'); No SQLFORMS ( Dentro de um trigger ou Procedure) If : BLOCO1.CAMPO1 = 'S' Then MANTEM.processamento('AVISO', 'empregados OK '); Else ROLLBACK; End If; Benefícios da Package Packages proporcionam um conjunto de benefícios tanto durante o desenvolvimento de sistemas como em sua manutenção e execução. DURANTE O DESENVOLVIMENTO: Modularidade: Compreendendo os relacionamentos lógicos existentes em um determinado sistema, podemos encapsulá-los através de um package. Dessa forma cada package é de fácil compreensão, as interfaces são simples, claras e bem definidas. Independência de Compilação: Para compilar um programa que use o package basta que a especificação do package esteja criada. Controle do Código e Objetos: Especificando quais objetos são públicos ( visíveis e acessíveis) e quais são privados ( definidos e utilizados internamente ).

30 30 Benefícios da Package DURANTE A MANUTENÇÃO: Fácil manutenção: Ao se alterar o corpo de um package, diferentemente das procedures e functions, não é necessário a recompilação dos objetos que fazem referência a parte do package body alterada. Mas uma alteração no package specification necessitará de uma recompilação. DURANTE A EXECUÇÃO: Performance: Quando um programa definido em um package é chamado, todo o package é carregado para a memória, necessitando de menos I/O nos próximos acessos. Controle em uma sessão: Cada sessão aberta tem seu próprio set de constantes, cursores e variáveis. Estas possuem valores null na primeira vez que um package é referenciado. Ao término de uma sessão os valores são perdidos e 'startados' com valores null numa nova sessão aberta.

31 31 Escopo da Package PACKAGE PÚBLICO DECLARAÇÕES Variável AUX Procedure teste1 Procedure teste2 Function F1 Package Specification PRIVADO PÚBLICO CÓDIGO DO PACKAGE Procedure teste3 Function F2 Variável Procedure teste1 Procedure teste2 Function F1 Package Body Qualquer objeto declarado no PACKAGE SPECIFICATION será PÚBLICO para qualquer ambiente que o referencie. Qualquer objeto declarado SOMENTE no PACKAGE BODY será PRIVADO, NÃO podendo ser referenciado por outros ambientes. Porém, internamente, esses objetos são públicos.

32 32 Procedures Multi-Datatype Em certas situações é interessante que uma determinada função possa receber mais de um tipo de dado. Neste caso criarmos no package várias funções com o mesmo nome, cada uma aceitando um tipo de dado diferente. No momento da chamada o Oracle determinará qual função deverá ser acionada. Exemplo: Programa PL/SQL (Teste.sql): SET SERVEROUTPUT ON /* Programa chama a mesma procedure passando tipos diferentes */ Multi_Type.Teste ('Tipo CARACTER', 'W'); Multi_Type.Teste ( 'Tipo NUMERICO', 4); Multi_Type.Teste ( 'Tipo DATA', SYSDATE); Resultado da Execução: CHAR=> P1 = Tipo CARACTER P2=W NUM=> P1 = Tipo NUMERICO P2=4 DATE=> P1 = Tipo DATA P2=14/06/94 PL/SQL procedure successfully completed.

33 33 Procedures Multi-Datatype Packages Specification: CREATE OR REPLACE PACKAGE Multi_Type is PROCEDURE Teste ( Y IN CHAR, Z IN NUMBER); PROCEDURE Teste ( Y IN CHAR, Z IN CHAR); PROCEDURE Teste ( Y IN CHAR, Z IN DATE); END Multi_Type; / Package Body CREATE OR REPLACE PACKAGE BODY Multi_Type is PROCEDURE Teste ( Y IN CHAR, Z IN NUMBER) is DBMS_OUTPUT.PUT_LINE ('NUM => ' 'P1 = ' Y 'P2 = ' TO_CHAR(Z)); PROCEDURE Teste ( Y IN CHAR, Z IN CHAR ) is DBMS_OUTPUT.PUT_LINE ( 'CHAR =>' 'P1 = ' Y 'P2 = ' Z); PROCEDURE Teste ( Y IN CHAR, Z IN DATE ) is DBMS_OUTPUT.PUT_LINE(' DATE => ' 'P1 = ' Y 'P2 = ' TO_CHAR(Z, ' DD/MM/YY')); END Multi_Type;

34 34 Eliminando Packages Exemplo: DROP PACKAGE mantem; DROP PACKAGE BODY mantem; Obs: O comando DROP PACKAGE elimina tanto a especificação quanto o corpo do Package. Compilando Para compilar um Package manualmente execute os seguintes comandos: Alter Package nome do package Compile Esse comando recompilará todo o package. Alter Package nome do package Compile Specification Esse comando recompilará o Package Specification Alter Package nome do package Compile Body Esse comando recompilará o Package Body. Exercícios 1)Crie um package EMP_NOME com uma funções que retornem os nomes do empregado associado ao ID passados como parâmetro. Exemplo: EMP_NOME(20) => 'Chad'. 2)Crie um package que manipule a tabela AUDITE, Implemente como a seguir funções: a)usr_log.inclue(tipo,texto) => Semelhante ao processamento. b)usr_log.lista1 (tipo) => Lista todas as entradas como tipo especificado. c)usr_log.lista2 (date) => Lista todas as datas a partir da data especificada. d)usr_log.elimina (date) => Apaga todas as entradas mais velhas que a data e hora especificadas.

35 35 6. Database Triggers Criando Database Triggers Exemplo: CREATE OR REPLACE TRIGGER Log_Alteração BEFORE DELETE OR UPDATE ON emp FOR EACH ROW WHEN ( : new.salary > 2500) processamento ('ALTERAÇÃO', user, sysdate, 'alterado salárial'); EXCEPTION When Others Raise_application_error ( , ' Trigger Failure');

36 36 Ativação de Triggers Triggers são tipos especiais de stored procedures que são ativados automaticamente como efeito de um comando de DML em uma tabela. Logo: Não é possível chamar explicitamente um trigger. Não é possível passar parâmetros para um triggers. Não é possível associar um trigger a qualquer objeto que não seja uma tabela ( ex: views, synonyms etc..) Um trigger pode ser ativado por qualquer um dos comandos de DML. Exemplo: CREATE TRIGGER tr_ins AFTER INSERT ON tab CREATE TRIGGER tr_del AFTER DELETE ON tab CREATE TRIGGER tr_upd AFTER UPDATE ON tab Ou por qualquer conjunto de eventos. Exemplo: CREATE TRIGGER tr_all AFTER INSERT OR DELETE OR UPDATE ON tab Além disso se o trigger especificar um UPDATE como evento é possível incluir uma lista de colunas opcional no comando. Exemplo: CREATE TRIGGER tr_col AFTER INSERT OR UPDATE OF codsocio, nomsocio ON tab.

37 37 Cláusulas BEFORE/AFTER Quanto ao momento de execução os triggers podem ser disparados: BEFORE evento : O trigger é executado após a submissão do comando mas antes da sua execução. Os dados são lidos e passados para o trigger e caso o trigger seja bem sucedido eles são lidos novamente para a execução da operação. Caso o trigger falhe, a operação é suspensa sem alterar o banco. Sugestão: trigger_up_date AFTER evento: O trigger é executado após a execução do comando mas antes da sua liberação para o usuário. Os dados são lidos para a execução da operação e passados para o trigger. Assim a performance é um pouco melhor do que na opção BEFORE. Caso o trigger falhe, a operação é desfeita no banco. Triggers de Linha ou de Comando Os triggers podem ser ativados uma única vez por comando ou a cada linha manipulada. O default é a ativação por comando sendo a ativação por linha definida pela cláusula FOR EACHROW. Exemplo: Na tabela: Cod_socio Nom_socio 1 Pedro 1Eliane 2Celso 3Cynthia 4Eduardo O comando: DELETE tab WHERE cod_socio > 2; Ativaria apenas uma vez o trigger: CREATE TRIGGER tr_com BEFORE DELETE ON tab { comando} Mas ativaria três vezes o trigger: CREATE TRIGGER tr_com BEFORE DELETE ON tab FOR EACH ROW { comando}

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

SQL Gatilhos (Triggers)

SQL Gatilhos (Triggers) SQL Gatilhos (Triggers) Laboratório de Bases de Dados Gatilho (trigger) Bloco PL/SQL que é disparado de forma automática e implícita sempre que ocorrer um evento associado a uma tabela INSERT UPDATE DELETE

Leia mais

Oracle 10g: SQL e PL/SQL

Oracle 10g: SQL e PL/SQL Oracle 10g: SQL e PL/SQL PL/SQL: Visão Geral Enzo Seraphim Visão Geral Vantagens de PL/SQL Suporte total à linguagem SQL Total integração com o Oracle Performance Redução da comunicação entre a aplicação

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

Leia mais

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure

Leia mais

PL/pgSQL por Diversão e Lucro

PL/pgSQL por Diversão e Lucro PL/pgSQL por Diversão e Lucro Roberto Mello 3a. Conferência Brasileira de PostgreSQL - PGCon-BR Campinas - 2009 1 Objetivos Apresentar as partes principais do PL/pgSQL Apresentar casos de uso comum do

Leia mais

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição. Conceitos PL/Sql Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição. Sintaxe CREATE SEQUENCE [schema.]sequence [INCREMENT BY

Leia mais

Linguagem PL/SQL e Triggers

Linguagem PL/SQL e Triggers TECNOLOGIA DE BASES DE DADOS Linguagem PL/SQL e Triggers António Manuel Silva Ferreira UNIVERSIDADE DE LISBOA FACULDADE DE CIÊNCIAS DEPARTAMENTO DE INFORMÁTICA asfe@di.fc.ul.pt Sumário Linguagem PL/SQL

Leia mais

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger A tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

Integridade dos Dados

Integridade dos Dados 1 Integridade dos Dados Integridade dos Dados Melissa Lemos melissa@inf.puc-rio.br A integridade dos dados é feita através de restrições, que são condições obrigatórias impostas pelo modelo. Restrições

Leia mais

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com

SQL Procedural. Josino Rodrigues Neto josinon@gmail.com SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server

Leia mais

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL BANCO DE DADOS 2 SQL (CREATE TABLE, CONSTRAINTS, DELETE, UPDATE e INSERT) Prof. Edson Thizon SQL SQL ( structured query language ) é uma linguagem comercial de definição e manipulação de banco de dados

Leia mais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br Na última aula estudamos Unidade 4 - Projeto Lógico Normalização; Dicionário de Dados. Arquitetura

Leia mais

António Rocha Nuno Melo e Castro

António Rocha Nuno Melo e Castro António Rocha Nuno Melo e Castro !"#$ Excepção: condição de erro; quando ocorre o erro é levantada uma excepção que interrompe o fluxo normal de execução do programa e o direcciona para uma rotina de tratamento

Leia mais

Triggers e mais... Instituto Militar de Engenharia IME 1o. Semestre/2005 Triggers Propósito mais amplo que restrições Restrições onde se explicita o evento Regras event-condition-action (ECA) Eventos:

Leia mais

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento

Leia mais

Logado no OracleXE vamos acessar a opção:

Logado no OracleXE vamos acessar a opção: Tutorial PL/SQL O PL/SQL é uma linguagem procedural que roda diretamente no núcleo do SGBD Oracle. O objetivo deste tutorial é mostrar a criação de funções e procedimentos em PL/SQL, interagindo com comandos

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas

Leia mais

FUNCTIONS EM UMA INSTRUÇÃO SQL...

FUNCTIONS EM UMA INSTRUÇÃO SQL... PL/SQL Avançado 2 1 MUTATING TABLES... 4 1.1 O QUE É MUTATING TABLE?... 4 1.2 SIMULANDO UM MUTATING TABLE... 4 1.3 QUAIS EVENTOS CAUSAM MUTATING TABLE... 5 2 CURSOR VARIABLES... 7 2.1 CARACTERÍSTICAS DAS

Leia mais

PL/pgSQL. Introdução. Introdução. Introdução

PL/pgSQL. Introdução. Introdução. Introdução Introdução PL/pgSQL Banco de Dados II Prof. Guilherme Tavares de Assis PL/pgSQL (Procedural Language for the PostgreSQL) é uma linguagem procedural carregável desenvolvida para o SGBD PostgreSQL, que possui

Leia mais

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS) BANCO DE DADOS SQL (DDL: CREATE TABLE, CONSTRAINTS) Prof. Edson Thizon Histórico Entre 1974 e 1979, o San José Research Laboratory da IBM desenvolveu um SGDB relacional que ficou conhecido como Sistema

Leia mais

Triggers no PostgreSQL

Triggers no PostgreSQL Triggers no PostgreSQL Traduzido do manual do PostgreSQL Pode-se utilizar PL/pqSQL para a definição de triggers (gatilhos). Um procedimento do tipo trigger é criado com o comando CREATE FUNCTION, declarando

Leia mais

INTRODUÇÃO AO PL/SQL

INTRODUÇÃO AO PL/SQL INTRODUÇÃO AO PL/SQL ALEX JOSE SILVA RECIFE/2015 Índice Introdução Ao Pl/Sql...3 Entendendo a linguagem...4 Principais características da linguagem PL/SQL...5 Blocos de código...5 Declaração de variáveis...5

Leia mais

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger a tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco

Leia mais

Sistemas de Informação

Sistemas de Informação Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você por Cristóferson Guimarães Magalhães Bueno e Odilon Corrêa da Silva 1 O objetivo deste artigo é demonstrar como criar um sistema

Leia mais

Controle de transações em SQL

Controle de transações em SQL Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente

Leia mais

MANUAL INSTALAÇÃO WEB SERVICE

MANUAL INSTALAÇÃO WEB SERVICE MANUAL INSTALAÇÃO WEB SERVICE Recebimento de dados pelo Hospital Versão 1.1 2/9/2014 Contato suporte@gtplan.com.br Índice Introdução... 2 Requerimentos para instalação do Web Service... 2 Instalação...

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

Oracle 10g Dicas de PL/SQL. Conteúdo

Oracle 10g Dicas de PL/SQL. Conteúdo Oracle 10g Dicas de PL/SQL Conteúdo Objetivos... 2 Comentários... 2 Declarações... 2 Conversões de variáveis... 2 DDL Criar, alterar ou apagar tabelas Create, Alter or Drop table... 3 Restrições na criação

Leia mais

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Banco de Dados II Triggers e Functions Prof. Moser Fagundes Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Sumário da aula Functions (funções) Triggers (gatilhos) Atividades Functions

Leia mais

Para criar uma procedure. Uma procedure é um grupo de comandos PL/SQL que realizam uma tarefa. OR REPLACE Recria a procedure se esta já existir.

Para criar uma procedure. Uma procedure é um grupo de comandos PL/SQL que realizam uma tarefa. OR REPLACE Recria a procedure se esta já existir. GERENCIANDO DADOS E CONCORRÊNCIA Pl/SQL PL/SQL significa "Procedural Language extensions to SQL". O PL/SQL pode ser usado em bancos de dados Oracle, no Oracle Server, em ferramentas clientes, isto é, Oracle

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

Bancos de Dados I. Integridade semântica

Bancos de Dados I. Integridade semântica Bancos de Dados I PUC-Rio Departamento de Informática (DI) Eng./Ciência da Computação e Sist. Informação Contrôle de Integridade em SGBDs: procedimentos armazenados, gatilhos e funções Prof. sergio@inf.puc-rio.br

Leia mais

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

FUNCTION ) RETURNS INTEGER AS $$ DECLARE PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos

Leia mais

Formação Oracle Completa

Formação Oracle Completa PROPOSTA COMERCIAL Formação Oracle Completa Proposta PR140505 140505-01 5 de Maio de 2014 05/05/14 Dextraining Treinamentos em TI Página 1 de 14 1 A Dextraining A Dextra foi fundada em 1995, já com a missão

Leia mais

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br PostgreSQL www.postgresql.org André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br Características Licença BSD (aberto, permite uso comercial) Multi-plataforma (Unix, GNU/Linux,

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix Ingress SQL

Leia mais

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis.

UNISA Universidade de Santo Amaro. http://www.unisa.br. Material de Estudo. Módulo I: Básico Banco de dados SQL Server. http://www.unisa-sis. UNISA Universidade de Santo Amaro http://www.unisa.br Material de Estudo Módulo I: Básico Banco de dados SQL Server http://www.unisa-sis.info Junho/2010 Objetivo do Workshop Compartilhar e apresentar

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. Triggers um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. o evento pode ser INSERT, UPDATE, ou DELETE. o trigger pode ser accionado imediatamente

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

Leia mais

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve Triggers e Regras Fernando Lobo Base de Dados, Universidade do Algarve 1 / 14 Triggers Um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br BANCO DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br INTRODUÇÃO AO SQL Ferramentas brmodelo Ferramenta Case PostgreSQL versão 8 ou superior SGBD Em 1986 o American

Leia mais

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Página 2 Prgrama Teórico/Prático - SQL Linguagem

Leia mais

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011 Banco de Dados I Aula 12 - Prof. Bruno Moreno 04/10/2011 Plano de Aula SQL Definição Histórico SQL e sublinguagens Definição de dados (DDL) CREATE Restrições básicas em SQL ALTER DROP 08:20 Definição de

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Monitoria GDI Aula Prática. DML + PL/SQL parte 1 Monitoria GDI Aula Prática DML + PL/SQL parte 1 DML linguagem de manipulação de dados SQL Estrutura básica de uma consulta SQL SELECT Coluna1[,Coluna2[,Coluna3[,...]]] FROM Tabela1[,Tabela2[,...]] WHERE

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

Operação de União JOIN

Operação de União JOIN Operação de União JOIN Professor Victor Sotero SGD 1 JOIN O join é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

Leia mais

PostgreSQL 8.0. Diogo Biazus

PostgreSQL 8.0. Diogo Biazus PostgreSQL 8.0 Diogo Biazus PostgreSQL 7.X Totalmente ACID MVCC Tipos e operadores customizáveis Diversas linguagens procedurais Hot backup Código aberto (BSD) Facilidade de extensão PL/pgSQL, PL/Python,

Leia mais

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010 BANCO DE DADOS: SQL UERN - Universidade do Estado do Rio Grande do Norte. Departamento de Ciências da Computação. 27 de janeiro de 2010 índice 1 Introdução 2 3 Introdução SQL - Structured Query Language

Leia mais

trigger insert, delete, update

trigger insert, delete, update 1 Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete,

Leia mais

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia Bases de Dados 2012/2013 Restrições de Integridade em SQL Helena Galhardas Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 1 Sumário Restrições de Integridade (RIs) em SQL Chave

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com

PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com PostgreSQL o SGBD das 1001 linguagens Diogo Biazus diogob@gmail.com Um dos grandes diferenciais do PostgreSQL em relação à maioria dos outros sistemas de bancos de dados é a presença de diversas linguagens

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

Elementos Básicos de PL

Elementos Básicos de PL Banco de Dados PL Fernando Fonseca Ana Carolina Salgado PLSQL Procedural LanguageSQL Linguagem de programação sofisticada, utilizada para ter acesso a uma base de dados Oracle a partir de vários ambientes

Leia mais

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Linguagem de Programação de Banco de Dados Triggers em PostgreSQL Todos os bancos de dados comerciais possuem uma linguagem procedural auxiliar para a

Leia mais

Consultoria e Treinamento em Bancos de Dados Relacionais

Consultoria e Treinamento em Bancos de Dados Relacionais Tabela de conteúdos CREATE TABLE AS...1 CREATE DOMAIN...1 Funções de dados...2 Funções de data e hora...2 Funções de agregação...3 Expressões condicionais...4 CASE...4 COALESCE...4 NULLIF...4 Controle

Leia mais

SQL DDL Criando Tabelas e Restrições

SQL DDL Criando Tabelas e Restrições SQL DDL Criando Tabelas e Restrições Fernanda Baião UNIRIO Material parcialmente extraído a partir das notas de aula de Maria Luiza M. Campos, Arnaldo Rocha e Maria Cláudia Cavalcanti Comandos de Definição

Leia mais

Apostila do Minicurso de PL/SQL. François Oliveira

Apostila do Minicurso de PL/SQL. François Oliveira Apostila do Minicurso de PL/SQL François Oliveira PL/SQL é uma extensão para SQL ela adiciona a linguagem procedural ao SQL do Oracle. Ela oferece modernas características como sobrecarga, coleções, tratamento

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos.

estiver abaixo ou igual ao mínimo, um novo pedido é acrescentado a uma relação pedidos. TRIGGERS Um trigger é uma instrução que o sistema executa automaticamente como um efeito colateral de uma modificação no banco de dados. Para criar um mecanismo de trigger, temos de cumprir dois requisitos:

Leia mais

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Abordagem geral Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br Em primeiro plano, deve-se escolher com qual banco de dados iremos trabalhar. Cada banco possui suas vantagens,

Leia mais

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015 SQL - Banco de Dados 1 Disciplina: Banco de Dados Professor: José Antônio 2 Tópicos de discussão Criando um banco de dados Incluindo, atualizando e excluindo linhas nas tabelas Pesquisa básica em tabelas

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

Hugo Pedro Proença, 2007

Hugo Pedro Proença, 2007 Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações

Leia mais

MER e Conceitos gerais

MER e Conceitos gerais MER e Conceitos gerais IBGE 1)O Modelo de Entidades Relacionamentos, segundo Paulo Cougo, descreve o mundo como:... cheio de coisas que possuem características próprias e que se relacionam entre si. Essas

Leia mais

Prefácio. Público alvo. Como o livro está dividido?

Prefácio. Público alvo. Como o livro está dividido? Prefácio Sempre gostei de livros que conversam com o leitor, principalmente os técnicos. Como se fosse uma troca de ideias entre o autor e a pessoa que o está lendo. Procurei escrever desta forma, pois

Leia mais

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre BANCO DE DADOS BANCO DE DADOS Prof. Patrícia Lucas 3º Trimestre ROTEIRO PARA O 3º TRIMESTRE 1. O MySQL DDL SQL 1. Como funciona o MySQL 2. Como criar um banco de dados no MySQL 3. Como criar tabelas: comandos

Leia mais

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04 BD Oracle SGBD Oracle Licenciatura em Engenharia Informática e Computação Bases de Dados 2003/04 BD Oracle Introdução aos SGBD Base de Dados Colecção de dados que descrevem alguma realidade Sistema de

Leia mais

Banco de Dados Avançados Banco de Dados Ativo

Banco de Dados Avançados Banco de Dados Ativo Universidade Federal de Pernambuco Centro de Informática Banco de Dados Avançados Banco de Dados Ativo Equipe: Felipe Cavalcante Fernando Kakimoto Marcos Corrêa Sumário 1. Mini-Mundo... 3 1.1 Entidades...

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) SQL-Breve Histórico : # CREATE, ALTER e DROP; # BEGIN TRANSACTION, ROLLBACK e COMMIT; # GRANT, REVOKE e DENY; 1 Structured Query Language (SQL) Desenvolvida pelo departamento

Leia mais

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW, ÍNDICE e SEQUÊNCIA. Stored procedure PL/SQL. Procedimentos e Funções. Procedimento (procedure) Procedure

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW, ÍNDICE e SEQUÊNCIA. Stored procedure PL/SQL. Procedimentos e Funções. Procedimento (procedure) Procedure PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW, ÍNDICE e SEQUÊNCIA Stored procedure Uma Stored procedure é um grupo de comandos SQL e PL/SQL que executam determinada tarefa e podem ser invocados por um nome.

Leia mais

NORMA TÉCNICA PARA DEFINIÇÃO DE OBJETOS DE BANCO DE DADOS E DE ESTRUTURAS DE ARMAZENAMENTO QUE CONSTITUEM O BANCO DE DADOS CORPORATIVO

NORMA TÉCNICA PARA DEFINIÇÃO DE OBJETOS DE BANCO DE DADOS E DE ESTRUTURAS DE ARMAZENAMENTO QUE CONSTITUEM O BANCO DE DADOS CORPORATIVO NORMA TÉCNICA PARA DEFINIÇÃO DE OBJETOS DE BANCO DE DADOS E DE ESTRUTURAS DE ARMAZENAMENTO QUE CONSTITUEM O BANCO DE DADOS CORPORATIVO Referência: NT-AI.04.04.01 http://www.unesp.br/ai/pdf/nt-ai.04.04.01.pdf

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

INICIAL. Guia de Criação da Base Produção Paralela IMPORTANTE: MESMO QUE SEJAM EXECUTADOS

INICIAL. Guia de Criação da Base Produção Paralela IMPORTANTE: MESMO QUE SEJAM EXECUTADOS Guia de Criação da Base Produção Paralela INICIAL SEQUENCES, tabelas de BMF e CADASTRO. Atualização de Bancos de Dados. Validações necessárias. IMPORTANTE: MESMO QUE SEJAM EXECUTADOS OS PROCEDIMENTOS DA

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

SQL e PL/SQL Oracle Dicas de preparação para certificação

SQL e PL/SQL Oracle Dicas de preparação para certificação - 1 - SQL e PL/SQL Oracle Dicas de preparação para certificação Selection: para escolher linhas em uma tabela Projection: para escolher colunas em uma tabela Join: pode trazer simultaneamente dados que

Leia mais

Núcleo de Pós Graduação Pitágoras

Núcleo de Pós Graduação Pitágoras Núcleo de Pós Graduação Pitágoras Professor: Fernando Zaidan Disciplina: Modelagem e Projeto de Banco de Dados Especialização em Tecnologia da Informação - Ênfases Março- 2009 1 Modelo Físico Introdução

Leia mais

Introdução ao SQL. Aécio Costa

Introdução ao SQL. Aécio Costa Aécio Costa A linguagem SQL é um padrão de linguagem de consulta comercial e possui as seguintes partes: Linguagem de definição de dados (DDL) Linguagem interativa de manipulação de dados (DML) Definição

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Visão Geral Uma transação é uma unidade lógica de trabalho (processamento) formada por um conjunto de comandos SQL cujo objetivo é preservar a integridade e a consistência dos dados. Ao final

Leia mais

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados. Maurício Edgar Stivanello Banco de Dados Maurício Edgar Stivanello Agenda Conceitos Básicos SGBD Projeto de Banco de Dados SQL Ferramentas Exemplo Dado e Informação Dado Fato do mundo real que está registrado e possui um significado

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

Linguagem SQL Sub-linguagem DDL

Linguagem SQL Sub-linguagem DDL Linguagem SQL Sub-linguagem DDL A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language para suas

Leia mais

Tratamento de Exceções

Tratamento de Exceções Tratamento de Exceções Laboratório de Bases de Dados Tratamento de Exceções Exceções erros e imprevistos que podem ocorrer durante a execução de um bloco PL/SQL SGBD ao encontrar um erro ou um imprevisto,

Leia mais