PL SQL Conceitos básicos
Tese: PL SQL Conceitos básicos. Pesquise 861.000+ trabalhos acadêmicosPor: eric2010 • 29/1/2014 • Tese • 8.349 Palavras (34 Páginas) • 623 Visualizações
I. Conceitos básicos
Introdução
Um número muito grande de operações pode ser executado sobre um banco de dados através de comandos SQL. Algumas dessas operações podem ser bastante complexas, envolvendo um grande número de tabelas e consultas, com aninhamento de comandos inclusive. Esses recursos da SQL não são suficientes, entretanto, para solucionar muitos problemas comerciais típicos, uma vez que a SQL não oferece recursos de programação estruturada, como loopings e desvios, por exemplo. Por esse motivo, os principais fornecedores de SGBDs criaram suas próprias extensões procedurais à SQL (como a PL/SQL no Oracle ou a Transact SQL no SQL Server), de maneira a prover recursos de programação em seus gerenciadores. Essas extensões são verdadeiras linguagens de programação embutidas no SGBD, porém são proprietárias, ou seja, variam de um produto para outro, apesar de implementarem alguns conceitos básicos comuns.
Assim, temos a implementação da SQL nos diversos gerenciadores de banco de dados ocorrendo basicamente em 3 níveis, conforme a figura a seguir:
Recursos SQL do SGBD
Extensões não Extensões
SQL padrão procedurais à procedurais à
SQL SQL
No primeiro nível, chamado de SQL padrão na figura, há uma uniformidade na sintaxe de certos recursos SQL, através de padronizações internacionais controladas por órgãos especiais como ANSI, ISO, X-Open, etc. Entram nesta categoria uma grande parte dos comandos DML SQL, de maneira que a sintaxe e o funcionamento de um SELECT por exemplo, tanto no Oracle como no SQL Server ou MS-Access são iguais para a maioria das consultas básicas.
Para prover capacidades mais amplas em seus produtos, os fornecedores muitas vezes acrescentam recursos adicionais ao mecanismo básico, como por exemplo funções de agregação extras (para cálculo de desvio padrão ou variância, por exemplo), manipulação de strings, tipos de dados, tamanho de registro, cláusulas extras em comandos, etc. Esses recursos variam muito de um SGBD para outro, o que significa que soluções que os utilizem podem não funcionar em outros ambientes de banco de dados e são representados na figura como Extensões não procedurais à SQL.
O terceiro nível, indicado como Extensões procedurais à SQL representa a linguagem de programação procedural suportada pelo SGBD, e constitui o tema desta apostila.
Com os recursos fornecidos pelas extensões procedurais dos gerenciadores de banco de dados é possível construir rotinas de diversos tipos que funcionam dentro do SGBD, implementando operações de lógica mais complexa e capacidades de processamento linha a linha. Neste material utilizaremos como referência o Oracle 7.3 Server e sua linguagem de programação, chamada PL/SQL (Procedural Language / SQL).
II PL/SQL _ Estrutura Básica
Como vimos, o PL/SQL é uma extensão da linguagem SQL, que permite a construção de blocos de comandos SQL para acesso e manipulação das bases de dados. Estes blocos podem estar estruturados de duas formas:
Dentro de um arquivo texto na forma de um bloco anônimo. Este tipo de bloco não é cadastrado no dicionário de dados e sua execução é determinada através da chamada ao arquivo no qual ele se encontra.
Declarado na forma de uma sub-rotina de banco de dados.
A programação através da linguagem procedural (PL/SQL) apresenta diversas vantagens destacando-se:
Permite a construção de módulos: A construção em blocos quebra a complexidade de problemas gerando um conjunto de módulos lógicos, facilitando o gerenciamento. É possível a construção de blocos aninhados.
Declaração de variáveis: Declara variáveis, constantes e exceções que podem ser usadas em declarações procedurais e SQL.
Fluxo de Controle: Permite a utilização de comandos de desvio condicionais e incondicionais e também loops para seqüência de declarações.
Tratamento de erros: Processa erros do servidor com rotinas de tratamento de exceções, declara condições de erro definidas pelo usuário e as processa pelas rotinas de tratamento de exceções.
Portabilidade: Pode ser usado em qualquer plataforma que acesse um banco de dados Oracle.
Peformance: Pode aumentar o desempenho de aplicações críticas por ser uma ferramenta integrada ao Oracle.
Estrutura de um bloco PL/SQL (anônimo)
DECLARE
BEGIN
EXCEPTION
END;
Declare: Área opcional, destinada a declaração de variáveis, constantes cursores e exceções.
Begin: Área destinada a seqüência de comandos a serem executados. Contém declarações SQL para manipular dados no banco de dados e declarações PL/SQL.
Exception: Área destinada ao tratamento de exceções, isto é erros e condições anormais que ocorrerem na seção de execução (begin).
Exemplo 1:
Declare
wcarga_horaria number(5);
Begin
select carga_horaria into wcarga_horaria
from curso
where cod_curso = 5;
if wcarga_horaria is null then
update curso
set carga_horaria = 72;
commit;
end if ;
exception
when no_data_found then
insert into tab_erro values ( ‘ valor não encontrado’);
end;
Observações:
...