A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Banco de Dados Prof. MSc Wagner Siqueira Cavalcante.

Apresentações semelhantes


Apresentação em tema: "Banco de Dados Prof. MSc Wagner Siqueira Cavalcante."— Transcrição da apresentação:

1 Banco de Dados Prof. MSc Wagner Siqueira Cavalcante

2 Banco de Dados: Stored Procedures e Triggers BD – Stored Procedures e Triggers Stored Procedure é um conjunto de instruções escrito numa linguagem própria para procedures (procedimentos) e triggers (gatilhos) do SGBD, e que é armazenado como parte do banco de dados. Stored Procedure é um conjunto de instruções escrito numa linguagem própria para procedures (procedimentos) e triggers (gatilhos) do SGBD, e que é armazenado como parte do banco de dados. Stored Procedures reduzem o tráfego na rede, pois são executadas pelo SGBD na máquina servidora de banco de dados. Stored Procedures reduzem o tráfego na rede, pois são executadas pelo SGBD na máquina servidora de banco de dados. Stored Procedures não permitem instruções DDL... Stored Procedures não permitem instruções DDL... Triggers são quase a mesma coisa que stored procedures, exceto pelo modo como são chamadas (e mais alguns pequenos detalhes): Triggers são quase a mesma coisa que stored procedures, exceto pelo modo como são chamadas (e mais alguns pequenos detalhes): –Stored procedures podem ser chamadas por aplicações cliente, outras stored procedures ou triggers. –Triggers são chamados automaticamente quando uma alteração em uma linha da tabela em questão ocorre.

3 Stored Procedures BD – Stored Procedures Sintaxe de Stored Procedures: Sintaxe de Stored Procedures: CREATE or ALTER PROCEDURE NomedaProcedure ( ) RETURNS AS BEGIN END Parâmetros de entrada:Valores iniciais, que servem para estabelecer o comportamento do procedimento (todos os tipos, exceto BLOB ou ARRAY). Parâmetros de saída:Valores que retornam os resultados desejados, executados pelo procedimento (idem ao acima). Comandos da procedure:Conjunto de instruções SQL...

4 Um livro é escrito por um ou mais escritores, e os registram em uma única Editora, que pode publicar nenhum, um ou vários livros. Porém, nem todos estes livros conseguem ser lançados, embora já estejam registrados. Cada livro está associado a um determinado assunto, e pode ser escrito por um ou vários autores, os quais, por sua vez, podem escrever tantos livros quantos queiram. Autor-Livro Editora Código Nome 0,N 1,N 0,1 é de um publica Lançamento Preço 0,N Livro Código Data de contrato 1,N Autor Matrícula Nome CPF Data de nascimento Endereço nacionalidade 1,1 Sigla Descrição Assunto BD – Stored Procedures

5 Tabela AUTOR MATR.NOMECPFENDERECONASCIMNACIONAL 501Rogério Luís de C. Costa Rua Dom Pedro I, 11101/01/1971brasileira 502Chris Gane Av La Rue, XV02/02/1952norte americana 503Trish Sarson th Ave, 33303/03/1963norte americana 505Rogério Matoso Capim Praça do Centro, banco 404/04/1974brasileira 507Roger Martin Duvalle Av Ces La Vue, 55505/05/1985francesa 510José Antônio da Silva Rua 6 de Outubro, 60606/06/1976brasileira 511Elmasri th Ave, 77707/07/1967norte americana 521Navathe th Ave, 88808/08/1958indiana 533Silberschatz nd Ave, 99909/09/1969norueguesa... Um livro é escrito por um ou mais escritores, e os registram em uma única Editora, que pode publicar nenhum, um ou vários livros. Porém, nem todos estes livros conseguem ser lançados, embora já estejam registrados. Cada livro está associado a um determinado assunto, e pode ser escrito por um ou vários autores, os quais, por sua vez, podem escrever tantos livros quantos queiram. Por enquanto, considere apenas a tabela Autor...

6 Tabela AUTOR MATR.NOMECPFENDERECONASCIMNACIONAL 501Rogério Luís de C. Costa Rua Dom Pedro I, 11101/01/1971brasileira 502Chris Gane Av La Rue, XV02/02/1952norte americana 503Trish Sarson th Ave, 33303/03/1963norte americana 505Rogério Matoso Capim Praça do Centro, banco 404/04/1974brasileira 507Roger Martin Duvalle Av Ces La Vue, 55505/05/1985francesa 510José Antônio da Silva Rua 6 de Outubro, 60606/06/1976brasileira 511Elmasri th Ave, 77707/07/1967norte americana 521Navathe th Ave, 88808/08/1958indiana 533Silberschatz nd Ave, 99909/09/1969norueguesa... Exemplo 01: Exemplo 01: –Projete o nome, nascimento e nacionalidade do autor, cujo código será digitado em uma caixa de diálogo: Select nome, nascim, nacional From Autor Where Matricula = :Código BD – Stored Procedures Experimente, por exemplo, com 505

7 Tabela AUTOR MATR.NOMECPFENDERECONASCIMNACIONAL 501Rogério Luís de C. Costa Rua Dom Pedro I, 11101/01/1971brasileira 502Chris Gane Av La Rue, XV02/02/1952norte americana 503Trish Sarson th Ave, 33303/03/1963norte americana 505Rogério Matoso Capim Praça do Centro, banco 404/04/1974brasileira 507Roger Martin Duvalle Av Ces La Vue, 55505/05/1985francesa 510José Antônio da Silva Rua 6 de Outubro, 60606/06/1976brasileira 511Elmasri th Ave, 77707/07/1967norte americana 521Navathe th Ave, 88808/08/1958indiana 533Silberschatz nd Ave, 99909/09/1969norueguesa... Exemplo 01 (continuação): Exemplo 01 (continuação): –Projete o nome, nascimento e nacionalidade do autor, cujo código será digitado em uma caixa de diálogo: Select nome, nascim, nacional From Autor Where Matricula = :Código BD – Stored Procedures

8 Resultado da Consulta: NOMENASCIMNACIONAL Rogério Matoso Capim04/04/1974brasileira Exemplo 01 (continuação): Exemplo 01 (continuação): –Projete o nome, nascimento e nacionalidade do autor, cujo código será digitado em uma caixa de diálogo: Select nome, nascim, nacional From Autor Where Matricula = :Código BD – Stored Procedures Há só UMA resposta!

9 Exemplo 01 (continuação): –A–A–A–A seguir, crie um procedimento para executar esta situação: Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome SP_Dados_Autor. CREATE orALTERPROCEDURESP_Dados_Autor (entra_Codigosmallint) RETURNS (sai_Nomevarchar(80), sai_Nascimdate, sai_Nacionalvarchar(30) ) AS BEGIN Selectnome, nascim, nacional FromAutor WhereMatricula = :entra_Codigo INTO:sai_Nome, :sai_Nascim, :sai_Nacional; SUSPEND; END BD – Stored Procedures Select nome, nascim, nacional From Autor Where Matricula = :entra_Codigo

10 CREATE orALTERPROCEDURESP_Dados_Autor (entra_Codigo smallint) RETURNS (sai_Nome varchar(80), sai_Nascim date, sai_Nacional varchar(30) )ASBEGIN Select nome, nascim, nacional From Autor Where Matricula = :entra_Codigo INTO:sai_Nome, :sai_Nascim, :sai_Nacional; SUSPEND;END BD – Stored Procedures Exemplo 01 (final): Exemplo 01 (final): –E para usar o procedimento criado? SELECT * FROMSP_Dados_Autor ( 505 ); CREATE orALTERPROCEDURESP_Dados_Autor (entra_Codigo smallint) RETURNS (sai_Nome varchar(80), sai_Nascim date, sai_Nacional varchar(30) )ASBEGIN Select nome, nascim, nacional From Autor Where Matricula = :entra_Codigo INTO:sai_Nome, :sai_Nascim, :sai_Nacional; SUSPEND;END

11 Tabela AUTOR MATR.NOMECPFENDERECONASCIMNACIONAL 501Rogério Luís de C. Costa Rua Dom Pedro I, 11101/01/1971brasileira 502Chris Gane Av La Rue, XV02/02/1952norte americana 503Trish Sarson th Ave, 33303/03/1963norte americana 505Rogério Matoso Capim Praça do Centro, banco 404/04/1974brasileira 507Roger Martin Duvalle Av Ces La Vue, 55505/05/1985francesa 510José Antônio da Silva Rua 6 de Outubro, 60606/06/1976brasileira 511Elmasri th Ave, 77707/07/1967norte americana 521Navathe th Ave, 88808/08/1958indiana 533Silberschatz nd Ave, 99909/09/1969norueguesa... BD – Stored Procedures Experimente, por exemplo, com brasileira Exemplo 02: Exemplo 02: –Agora, experimente projetar os nomes, nascimento e nacionalidades do autores, cujas nacionalidades serão lidas na caixa de diálogo: Select nome, nascim, nacional From Autor Where nacional = :In_nacionalid

12 Resultado da Consulta NOMENASCIMNACIONAL Rogério Luís de C. Costa01/01/1971brasileira Rogério Matoso Capim04/04/1974brasileira José Antônio da Silva06/06/1976brasileira BD – Stored Procedures Exemplo 02 (continuação): Exemplo 02 (continuação): –Agora, experimente projetar os nomes, nascimento e nacionalidades do autores, cujas nacionalidades serão lidas na caixa de diálogo: Select nome, nascim, nacional From Autor Where nacional = :In_nacionalid Há MAIS QUE UMA resposta!

13 Exemplo 02 (continuação): Exemplo 02 (continuação): –Crie, então, o procedimento armazenado para executar esta situação: Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. CREATE orALTERPROCEDURESP_Dados_Autor2 (In_nacionalidvarchar(30)) RETURNS (out_Nomevarchar(80), out_Nascimdate, out_Nacionalvarchar(30) ) AS BEGIN INTO:out_Nome, :out_Nascim, :out_Nacional; SUSPEND; END BD – Stored Procedures Select nome, nascim, nacional From Autor Where nacional = :In_nacionalid

14 Exemplo 02 (continuação): Exemplo 02 (continuação): –Crie, então, o procedimento armazenado para executar esta situação: Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. CREATE orALTERPROCEDURESP_Dados_Autor2 (In_nacionalid varchar(30)) RETURNS (out_Nome varchar(80), out_Nascim date, out_Nacional varchar(30) )ASBEGIN Select nome, nascim, nacional From Autor Where nacional = :In_nacionalid INTO:out_Nome, :out_Nascim, :out_Nacional; SUSPEND;END BD – Stored Procedures Oops! Problemas, já que há mais que uma resposta! Usar:FOR SELECT... DOSUSPEND;

15 Exemplo 02 (continuação): Exemplo 02 (continuação): –Crie, então, o procedimento armazenado para executar esta situação: Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. Inicie o SQL Editor, digite as seguintes instruções SQL, salve-a com o nome dadosproprietario2 e a execute. CREATE orALTERPROCEDURESP_Dados_Autor2 (In_nacionalid varchar(30)) RETURNS (out_Nome varchar(80), out_Nascim date, out_Nacional varchar(30) )ASBEGIN FORSelect nome, nascim, nacional From Autor Where nacional = :In_nacionalid INTO:out_Nome, :out_Nascim, :out_Nacional DOSUSPEND;END BD – Stored Procedures Agora, sem o ; aqui

16 Exemplo 02 (continuação): Exemplo 02 (continuação): –E para usar o procedimento criado? CREATE or ALTER PROCEDURESP_Dados_Autor2 (In_nacionalidvarchar(30)) RETURNS (Out_Nome varchar(80), Out_nascim date, Out_nacional varchar(30) )ASBEGIN FOR Select nome, nascim, nacional From Autor Where nacional =:In_nacionalid INTO:Out_nome, :Out_nascim, :Out_nacional DOSUSPEND;END BD – Stored Procedures SELECT * FROMSP_Dados_Autor2 ( brasileira ); CREATE or ALTER PROCEDURESP_Dados_Autor2 (In_nacionalidvarchar(30)) RETURNS (Out_Nome varchar(80), Out_nascim date, Out_nacional varchar(30) )ASBEGIN FOR Select nome, nascim, nacional From Autor Where nacional =:In_nacionalid INTO:Out_nome, :Out_nascim, :Out_nacional DOSUSPEND;ENDSP_Dados_Autor2 (In_nacionalid ) :In_nacionalid

17 Exemplo 02 (final): Exemplo 02 (final): –Experimente, também: BD – Stored Procedures SELECT * FROMSP_Dados_Autor2 ( :Nacion ); SELECT * FROMSP_Dados_Autor2 ( :Nacionalidade ); SELECT * FROMSP_Dados_Autor2 ( :Digite a nacionalidade ); SELECT nome as Nome do autor FROMSP_Dados_Autor2 ( :Digite a nacionalidade );

18 Exercício 01: Exercício 01: –Crie um procedimento para calcular o valor médio dos livros de uma determinada editora, lida como parâmetro. –Salve-o com o nome de avglivros –Compile-o e efetive (commit) –Chame-o, via SQL, com o parâmetro predefinido (Brasoft Editora, por exemplo) –Chame-o, via SQL, com o parâmetro digitado via diálogo BD – Stored Procedures Exercício 02: Exercício 02: –Projete os títulos, datas de lançamento e valores dos livros que têm o seu valor maior que o valor médio daquele digitado via diálogo, baseado no procedimento avglivros.


Carregar ppt "Banco de Dados Prof. MSc Wagner Siqueira Cavalcante."

Apresentações semelhantes


Anúncios Google