Trabalho De Base De Dados Ii

  • Uploaded by: Luciano Valinho
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Trabalho De Base De Dados Ii as PDF for free.

More details

  • Words: 861
  • Pages: 10
Instituto Politécnico de Castelo Branco | Tecnologias de Informação e Multimédia

Escola Superior de Tecnologia

Base de Dados II 2008/09

Relatório Trabalho Individual I

Autores: 20060179 Luciano Valinho

[email protected]

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

Índice 1. Criar uma estrutura de dados (isbn:int,titulo:varchar2(30), ano:int) 2. Inserir 3 Registos à escolha 3. Bloco de pl/sql que permite receber um valor de entrada e listar o restante tuplo 4. Alterar a coluna titulo para “varchar2(50) 5. Executar novamente o bloco de pl/sql criado 6. Actualizar o bloco de pl/sql recorrendo ao uso do %TYPE ou %ROWTYPE 7. Conclusão

-2-

3 4 5 6 7 8 10

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

1. Criar uma estrutura de dados (isbn:int,titulo:varchar2(30), ano:int)

Código: CREATE TABLE Livros ( isbn INTEGER, titulo varchar2(30), ano INTEGER, PRIMARY KEY (isbn) );

Foi criada uma tabela com três campos, sendo o campo isbn chave primária, de maneira a que não haja livros repetidos na estrutura...

-3-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

2. Inserir 3 registos à escolha

Código: INSERT VALUES INSERT VALUES INSERT VALUES

INTO Livros (isbn, titulo, ano) (1, 'Perder Peso', 2007); INTO Livros (isbn, titulo, ano) (2, 'Como ganhar dinheiro fácil', 2008); INTO Livros (isbn, titulo, ano) (3, 'Fugir ao Fisco', 2006);

É inserido na tabela Livros 3 linhas com a informação do isbn, titulo e ano do livro respectivo.

-4-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

3. Bloco de pl/sql que permite receber um valor de entrada e listar o restante tuplo

Código: Declare find_livro_id int :=2; titulo_livro varchar2(30); ano_livro int; Begin select titulo, ano into titulo_livro, ano_livro from Livros where Livros.isbn = find_livro_id; dbms_output.put_line('ID do livro: '||find_livro_id); dbms_output.put_line('Título do Livro: '||titulo_livro); dbms_output.put_line('Ano do Livro: '||ano_livro); end;

A variável find_livro_id, vai receber o valor que vai permitir a procura do tuplo. Na query é feita a cláusula WHERE para encontrar o tuplo pretendido. Por fim, é mostrado o resultado.

-5-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

4. Alterar a coluna titulo para “varchar2(50)

Código: alter table Livros modify titulo varchar(50);

Este código permitiu alterar o campo titulo da tabela Livros de maneira a que possa ser possível introduzir 50 caracteres em vez dos 30 anteriores.

-6-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

5. Executar novamente o bloco de pl/sql Ao executar o bloco de código, este não fez nada. Mas visto que era suposto acontecer qualquer coisa deduzi que se houvesse um tuplo que contivesse o titulo superior a 30 caracteres um erro deveria acontecer: Sendo assim acrescentei um novo tuplo: Código: Insert into Livros (isbn, titulo, ano) VALUES (4, 'livro sobre um titulo grande, vá...mais ou menos', 2008);

De seguida executei o código criado anteriormente com uma ligeira diferença, mudei a variável “find_livro_id” para 4 , para ser encontrado o tuplo que criei anteriormente e deu o seguinte erro:

Erro: ERRO na linha 1: ORA-06502: PL/SQL: erro numérico ou de valor : o buffer da cadeia de caracteres é demasiado pequeno ORA-06512: na linha 9

Este erro acontece, visto que a variável titulo_livro continua a ter 30 caracteres no máximo, e o pedido à base de dados foi de um campo que continha mais de 30 caracteres.

-7-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

6. Actualizar o bloco de pl/sql recorrendo ao uso do %TYPE ou %ROWTYPE Uso do %TYPE

Código: Declare find_livro_id Livros.isbn%TYPE :=4; titulo_livro Livros.titulo%TYPE; ano_livro Livros.titulo%TYPE; Begin select titulo, ano into titulo_livro, ano_livro from Livros where Livros.isbn = find_livro_id; dbms_output.put_line('ID do livro: '||find_livro_id); dbms_output.put_line('Título do Livro: '||titulo_livro); dbms_output.put_line('Ano do Livro: '||ano_livro); end;

O uso do TYPE permite declarar uma variável do mesmo tipo que uma coluna que pretendemos da tabela.

-8-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

Uso do %ROWTYPE

Código: Declare find_livro_id Livros.isbn%TYPE :=4; linha Livros%ROWTYPE; Begin select * into linha from Livros where Livros.isbn = find_livro_id; dbms_output.put_line('ID do livro: '||linha.isbn); dbms_output.put_line('Título do Livro: '||linha.titulo); dbms_output.put_line('Ano do Livro: '||linha.ano); end;

O uso do %ROWTYPE permite guardar todo um tuplo numa variável, sendo possível aceder também a um campo concreto desse tuplo.

-9-

Base de Dados II | Trabalho Individual I | Luciano Valinho | Tecnologias de Informação e Multimédia

7. Conclusão Este pequeno exercício permitiu-me compreender melhor a utilização dos blocos pl/sql, mas especialmente fiquei com uma noção boa da utilização do %TYPE e do %ROWTYPE. Com o uso do %ROWTYPE é possível poupar-nos a declaração de algumas variáveis, e assim o “compilador” tem menos código a interpretar. O uso do %TYPE também tem as suas vantagens visto que podemos declarar uma variável sem saber o tipo de dados em concreto que esta deve conter. Dependendo de situação para situação, tanto o %ROWTYPE e o %TYPE podem ser bastante úteis.

- 10 -

Related Documents


More Documents from ""

October 2019 25
Soundforge Relatorio
October 2019 20
Trabalho De Base De Dados Ii
December 2019 20
October 2019 26
June 2020 2