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 BD – Stored Procedures e Triggers
Banco de Dados: 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 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... 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. BD – Stored Procedures e Triggers

3 Stored Procedures Sintaxe de Stored Procedures:
CREATE or ALTER PROCEDURE NomedaProcedure ( <parâmetros de entrada> ) RETURNS ( <parâmetros de saída> ) AS <declaração de variáveis locais> BEGIN <comandos da procedure> 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... BD – Stored Procedures

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. Escreve Editora Código Nome 0,N 1,N 0,1 Refere-se a publica Lançamento Preço Livro Título Autor Matrícula CPF Data de nascimento Endereço País 1,1 Sigla Descrição Assunto BD – Stored Procedures

5 Por enquanto, considere apenas a tabela Autor...
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... Tabela AUTOR MATRICULA NOME CPF ENDERECO NASCIM PAIS 501 Rogério Luís de C. Costa Rua Dom Pedro I, 111 01/01/1971 BR 502 Chris Gane Av La Rue, XV 02/02/1952 US 503 Trish Sarson 5th Ave, 333 03/03/1963 505 Rogério Matoso Capim Praça do Centro, banco 4 04/04/1974 507 Roger Martin Duvalle Av Ces La Vue, 555 05/05/1985 FR 510 José Antônio da Silva Rua 6 de Outubro, 606 06/06/1976 511 Elmasri 5th Ave, 777 07/07/1967 521 Navathe 5th Ave, 888 08/08/1958 IN 533 Silberschatz 2nd Ave, 999 09/09/1969 NO ... BD – Stored Procedures

6 Experimente, por exemplo, com 505
Projete o nome, nascimento e país do autor, cujo código será digitado em uma caixa de diálogo: Select nome, nascim, pais From Autor Where Matricula = :”Código” Tabela AUTOR MATRICULA NOME CPF ENDERECO NASCIM PAIS 501 Rogério Luís de C. Costa Rua Dom Pedro I, 111 01/01/1971 BR 502 Chris Gane Av La Rue, XV 02/02/1952 US 503 Trish Sarson 5th Ave, 333 03/03/1963 505 Rogério Matoso Capim Praça do Centro, banco 4 04/04/1974 507 Roger Martin Duvalle Av Ces La Vue, 555 05/05/1985 FR 510 José Antônio da Silva Rua 6 de Outubro, 606 06/06/1976 511 Elmasri 5th Ave, 777 07/07/1967 521 Navathe 5th Ave, 888 08/08/1958 IN 533 Silberschatz 2nd Ave, 999 09/09/1969 NO ... Experimente, por exemplo, com 505 BD – Stored Procedures

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

8 Exemplo 01 (continuação):
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”. Select nome, nascim, pais From Autor Where Matricula = :Codigo CREATE or ALTER PROCEDURE SP_Dados_Autor (Codigo smallint) RETURNS (sai_Nome varchar(80), sai_Nascim date, sai_pais char(02) ) AS BEGIN Select nome, nascim, pais From Autor Where Matricula = :Codigo INTO :sai_Nome, :sai_Nascim, :sai_pais; SUSPEND; END BD – Stored Procedures

9 E para usar o procedimento criado?
Exemplo 01 (final): E para usar o procedimento criado? SELECT * FROM SP_Dados_Autor ( ‘505’ ); CREATE or ALTER PROCEDURE SP_Dados_Autor (Codigo smallint) RETURNS (sai_Nome varchar(80), sai_Nascim date, sai_pais char(02) ) AS BEGIN Select nome, nascim, pais From Autor Where Matricula = :Codigo INTO :sai_Nome, :sai_Nascim, :sai_pais; SUSPEND; END CREATE or ALTER PROCEDURE SP_Dados_Autor (Codigo smallint) RETURNS (sai_Nome varchar(80), sai_Nascim date, sai_pais char(02) ) AS BEGIN Select nome, nascim, pais From Autor Where Matricula = :Codigo INTO :sai_Nome, :sai_Nascim, :sai_pais; SUSPEND; END BD – Stored Procedures

10 Experimente, por exemplo, com BR
Agora, experimente projetar os nomes, nascimento e países do autores, cujas países serão lidas na caixa de diálogo: Select nome, nascim, pais From Autor Where pais = :In_paisid Tabela AUTOR MATRICULA NOME CPF ENDERECO NASCIM PAIS 501 Rogério Luís de C. Costa Rua Dom Pedro I, 111 01/01/1971 BR 502 Chris Gane Av La Rue, XV 02/02/1952 US 503 Trish Sarson 5th Ave, 333 03/03/1963 505 Rogério Matoso Capim Praça do Centro, banco 4 04/04/1974 507 Roger Martin Duvalle Av Ces La Vue, 555 05/05/1985 FR 510 José Antônio da Silva Rua 6 de Outubro, 606 06/06/1976 511 Elmasri 5th Ave, 777 07/07/1967 521 Navathe 5th Ave, 888 08/08/1958 IN 533 Silberschatz 2nd Ave, 999 09/09/1969 NO ... Experimente, por exemplo, com BR BD – Stored Procedures

11 Há MAIS QUE UMA resposta!
Exemplo 02 (continuação): Agora, experimente projetar os nomes, nascimento e países do autores, cujas países serão lidas na caixa de diálogo: Select nome, nascim, pais From Autor Where pais = :In_paisid Há MAIS QUE UMA resposta! Resultado da Consulta NOME NASCIM PAIS Rogério Luís de C. Costa 01/01/1971 BR Rogério Matoso Capim 04/04/1974 José Antônio da Silva 06/06/1976 BD – Stored Procedures

12 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. Select nome, nascim, pais From Autor Where pais = :In_paisid CREATE or ALTER PROCEDURE SP_Dados_Autor2 (In_paisid char(02)) RETURNS (out_Nome varchar(80), out_Nascim date, out_pais char(02) ) AS BEGIN INTO :out_Nome, :out_Nascim, :out_pais; SUSPEND; END BD – Stored Procedures

13 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. CREATE or ALTER PROCEDURE SP_Dados_Autor2 (In_paisid char(02)) RETURNS (out_Nome varchar(80), out_Nascim date, out_pais char(02) ) AS BEGIN Select nome, nascim, pais From Autor Where pais = :In_paisid INTO :out_Nome, :out_Nascim, :out_pais; SUSPEND; END Oops! Problemas, já que há mais que uma resposta! Usar: FOR SELECT ... DO SUSPEND; BD – Stored Procedures

14 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. CREATE or ALTER PROCEDURE SP_Dados_Autor2 (In_paisid char(02)) RETURNS (out_Nome varchar(80), out_Nascim date, out_pais char (02) ) AS BEGIN FOR Select nome, nascim, pais From Autor Where pais = :In_paisid INTO :out_Nome, :out_Nascim, :out_pais DO SUSPEND; END Agora, sem “;” aqui BD – Stored Procedures

15 Exemplo 02 (continuação): E para usar o procedimento criado?
SELECT * FROM SP_Dados_Autor2 ( ‘BR’ ); CREATE or ALTER PROCEDURE SP_Dados_Autor2 (In_paisid char (02)) RETURNS (Out_Nome varchar(80), Out_nascim date, Out_pais char (02) ) AS BEGIN FOR Select nome, nascim, pais From Autor Where pais = :In_paisid INTO :Out_nome, :Out_nascim, :Out_pais DO SUSPEND; END SP_Dados_Autor2 (In_paisid ) :In_paisid CREATE or ALTER PROCEDURE SP_Dados_Autor2 (In_paisid char (02)) RETURNS (Out_Nome varchar(80), Out_nascim date, Out_pais char (02) ) AS BEGIN FOR Select nome, nascim, pais From Autor Where pais = :In_paisid INTO :Out_nome, :Out_nascim, :Out_pais DO SUSPEND; END BD – Stored Procedures

16 FROM SP_Dados_Autor2 ( :Pais );
Exemplo 02 (final): Experimente, também: SELECT * FROM SP_Dados_Autor2 ( :Pais ); SELECT * FROM SP_Dados_Autor2 ( :”País” ); SELECT * FROM SP_Dados_Autor2 ( :”Digite o país” ); SELECT nome as “Nome do autor” FROM SP_Dados_Autor2 ( :”Digite o país” ); BD – Stored Procedures

17 Salve-o com o nome de “avglivros” Compile-o e efetive (commit)
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 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”. BD – Stored Procedures


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

Apresentações semelhantes


Anúncios Google