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}

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

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

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

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

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

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

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

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

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

*O RDBMS Oracle é um sistema de gerenciamento de banco de dados relacional.

*O RDBMS Oracle é um sistema de gerenciamento de banco de dados relacional. Arquitetura Oracle e seus componentes Hoje irei explicar de uma forma geral a arquitetura oracle e seus componentes. Algo que todos os DBA s, obrigatoriamente, devem saber de cabo a rabo. Vamos lá, e boa

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

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

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

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

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

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

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

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

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

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 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

Persistência de Dados

Persistência de Dados Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD

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

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak Usando PostgreSQL na Regra de Negócio de um ERP Fabiano Machado Dias Eduardo Wolak Regra de negócio? São todas as regras existentes num sistema de informação, que ditam seu comportamento, suas restrições

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

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

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

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

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

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

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

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

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

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

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

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

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

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

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

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

Universidade Federal do Estado do Rio de Janeiro UNIRIO. Guia para criação do banco de dados de redes sociais

Universidade Federal do Estado do Rio de Janeiro UNIRIO. Guia para criação do banco de dados de redes sociais Universidade Federal do Estado do Rio de Janeiro UNIRIO Programa de Pós-Graduação em Informática Guia para criação do banco de dados de redes sociais Edvaldo Artmann de Oliveira edvaldo.oliveira@uniriotec.br

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

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados 1. Conceitos Básicos No contexto de sistemas de banco de dados as palavras dado e informação possuem o mesmo significado, representando uma

Leia mais

Disciplina: Unidade III: Prof.: E-mail: Período:

Disciplina: Unidade III: Prof.: E-mail: Período: Encontro 08 Disciplina: Sistemas de Banco de Dados Unidade III: Modelagem Lógico de Dados Prof.: Mario Filho E-mail: pro@mariofilho.com.br Período: 5º. SIG - ADM Relembrando... Necessidade de Dados Projeto

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

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

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

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

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas

Leia mais

EXEMPLOS DE COMANDOS NO SQL SERVER

EXEMPLOS DE COMANDOS NO SQL SERVER EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;

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

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

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

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

Banco de Dados Oracle. Faculdade Pernambucana - FAPE

Banco de Dados Oracle. Faculdade Pernambucana - FAPE Faculdade Pernambucana - FAPE Visão Geral dos Componentes Principais da Arquitetura Oracle Servidor Oracle É o nome que a Oracle deu ao seu SGBD. Ele consiste de uma Instância e um Banco de Dados Oracle.

Leia mais

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MANUAL

Leia mais

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language) Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de

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

Projeto de Banco de Dados

Projeto de Banco de Dados Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html

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

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

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

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

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

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

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Bases de Dados 2007/2008. Aula 9

Bases de Dados 2007/2008. Aula 9 Bases de Dados 2007/2008 Aula 9 1. T-SQL TRY CATCH 2. TRATAMENTO ERROS RAISERROR 3. TRIGGERS 4. EXERCÍCIOS Sumário Referências http://msdn2.microsoft.com/en-us/library/ms189826.aspx (linguagem t-sql) http://www.di.ubi.pt/~pprata/bd/bd0405-proc.sql

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

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

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

Arquitetura de BDs Distribuídos. Victor Amorim - vhca Pedro Melo pam2

Arquitetura de BDs Distribuídos. Victor Amorim - vhca Pedro Melo pam2 Victor Amorim - vhca Pedro Melo pam2 Arquitetura de BDs Distribuídos Sistemas de bds distribuídos permitem que aplicações acessem dados de bds locais ou remotos. Podem ser Homogêneos ou Heterogêneos: Homogêneos

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

Treinamento. DBA Oracle 11g. Duração: 120 horas

Treinamento. DBA Oracle 11g. Duração: 120 horas Treinamento DBA Oracle 11g Duração: 120 horas Neste curso no primeiro módulo (Introdução ao Oracle 11g SQL e PL_SQL) é oferecido um curso introdutório à tecnologia do banco de dados Oracle 11g. Também

Leia mais

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Objetivos: Criar restrições para atributos, chaves primárias e estrangeiras; Explorar consultas SQL com uso de

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

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II BANCO DE DADOS II AULA 3 Linguagem SQL Linguagem de manipulação de dados (DML) DISCIPLINA: Banco de

Leia mais

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS COTAS DE DISCO. Professor Carlos Muniz

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS COTAS DE DISCO. Professor Carlos Muniz ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS Trabalhando com cotas Usando o Gerenciador de Recursos de Servidor de Arquivos para criar uma cota em um volume ou uma pasta, você pode limitar o espaço em disco

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

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

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server. Recover no Oracle O backup e recuperação de dados em um SGBD é de grande importância para a manutenção dos dados. Dando continuidade a nossos artigos, apresentamos abaixo formas diferentes de se fazer

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Comandos DDL. id_modulo = id_m odulo

Comandos DDL. id_modulo = id_m odulo Comandos DDL Estudo de Caso Controle Acadêmico Simplificado Uma escola contém vários cursos, onde cada aluno possui uma matricula num determinado curso. Estes cursos, por sua vez, possuem módulos, aos

Leia mais

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 15 Manipulação de dados Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE

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

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

No Fedora, instalamos os pacotes mysql e mysql-server, usando o yum: Instalando o MySQL O MySQL é um banco de dados extremamente versátil, usado para os mais diversos fins. Você pode acessar o banco de dados a partir de um script em PHP, através de um aplicativo desenvolvido

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

Faculdade Lourenço Filho - ENADE 2011-1

Faculdade Lourenço Filho - ENADE 2011-1 1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode

Leia mais

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS Profº Erinaldo Sanches Nascimento Introdução Cursor é usado para percorrer um conjunto de linhas retornadas por uma consulta

Leia mais

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

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