Programação Avançada em Banco de Dados SQL
Por: Victor Jordan • 2/4/2020 • Exam • 2.274 Palavras (10 Páginas) • 173 Visualizações
Prova 2 - Programação Avançada de Banco de Dados
- Defina o que é um BLOB. Esses campos podem ser indexados pelo Oracle?
Resp.: É uma coleção de dados binários armazenados como uma única entidade em um sistema de gerenciamento de banco de dados. E podem ser indexados
- Qual a finalidade da package DBMS_LOB? Dê a definição e exemplifique o uso da função dbms_lob.getlength.
Resp.: O pacote DBMS_LOB fornece subprogramas para operar em CLOBs, BLOBs, NCLOBs, BFILEs e arquivos temporários. Você pode usar DBMS_LOB para acessar e manipulação de partes específicas de um LOB ou LOBs completos.
- Quais são as duas formas de armazenar um BLOB?
Resp.: Direto no BD (Blobs) e vinculado ao BD (Database File System Links)
- Quais são as formas de se implementar os comandos de acesso ao BD vistos em laboratório?
Resp.:
- Dependendo da forma de se construir os comandos de BD podemos equilibrar a utilização do servidor e do cliente. Esse equilíbrio é melhor evidenciado em qual formato de comando?
Resp.:
- Ao utilizarmos tabelas temporárias temos que pensar no modo de retenção dos seus dados. Indique quais são as opções e o que cada um faz com a informação armazenada.
Resp.:
- As tabelas temporárias servem para reduzir o processamento, explique de que forma elas influenciam nisso.
Resp.: Elas são mais eficientes para processar dados, é claro, desde que a quantidade de dados não ultrapasse a memória disponível. Elas podem ser criadas e destruídas dinamicamente e ter um escopo limitado. Pode-se criar e destruir tabelas temporárias dinamicamente. Elas podem refletir a estrutura de dados de uma tabela "física" ou podem ter uma estrutura de dados para um caso de uso particular, como por exemplo dados extraídos para um relatório. Pode-se armazenar temporariamente resultados de uma extração de dados demorada, como um cache.
Blocos Nomeados em PL/SQL
- Blocos nomeados: são objetos procedurais do BD criados em PL/SQL com a capacidade de serem executados repetidas vezes a partir de comandos SQL
- Em Oracle pode-se ter 2 tipos diferentes de blocos nomeados em PL/SQL
- Procedures: bloco PL/SQL responsável por executar o código e não retornar valor para o ponto de chamada;
- Functions: bloco PL/SQL responsável por executar o código e retornar valor para o ponto de chamada;
Características Gerais das Procedures e Functionsb
- Comando: CREATE OR REPLACE;
- São compilados na criação e o pseudo-código é gerado;
- São criados mesmo com erro de compilação;
- A dependência entre eles é rastreável;
- São debugávies (requer privilégios);
- O código-fonte e o pseudo-código são armazenados no BD;
- O código-fonte é recuperável a partir do BD;
Características Gerais das Procedures e Functions
- São executadas a partir de:
- Linha de comando do SQL*PLUS ou outra IDE
- Outro código PL/SQL (proc, func, package, trigger, bloco anônimo)
- Podem possuir parâmetros:
- IN (Tipo Default): parâmetros de entrada. O seu valor não pode ser modificado dentro da rotina;
- OUT: parâmetro de saída. O seu valor é modificado internamente no código e retornado para o ponto de chamada;
- IN OUT: é combinação dos anteriores;
- Cada parâmetro pode possuir um valor default;
- Best practice: utilize a declaração pelos atributos %ROWTYPE ou %TYPE;
- Os parâmetros podem ser fornecidos na forma posicional ou nomeada;
[pic 1]
Evitar parâmetros desnecessários
- Acostume-se a gerar os dados a seguir internamente, sem definição de parâmetros:
- Primary Keys: utilize sequences a partir do P&F;
- Usuário e data corrente: utilize as funções USER e SYSDATE;
- Armazenar valores defaults sempre que possível nos registros;
- Implemente regras de negócio para calcular automaticamente os valores;
Gestão da Segurança das P&F
- A segurança de acesso é gerenciável por privilégios do BD;
- Uma P & F executa sob a autoridade do seu proprietário e não do usuário conectado;
- O proprietário deve possuir acesso aos objetos referenciados pela P&F;
- O usuário precisa de privilégio de execução das P&F e não nos objetos acessados;
- As P&F são invalidadas em caso de quebra na dependência;
- A re-compilação é forçada pelo BD quando inválido;
Sintaxe para Procedures e Functions
create [or replace] procedure
Begin
[exception
end [
create [or replace] function
return is
...
Exemplo Procedure
create procedure raise_salary(dno number, percentage number DEFAULT 0.5) is
cursor emp_cur (dept_no number) is select SAL from EMP
where DEPTNO = dept no for update of SAL;
empsal number(8);
begin
open emp cur(dno); /* Aqui dept_no recebe dno */
loop
fetch emp_cur into empsal;
exit when emp_cur%NOTFOUND;
...