artigo sql magazine 51- Construindo Aplicações no Oracle

Artigo da revista SQL Magazine edição 51.

Esse artigo faz parte da revista SQL Magazine edição 51. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

 

Construindo Aplicações no Oracle

Stored Procedures - Procedures, Functions e Packages – Parte I

 

O banco de dados Oracle nos oferece uma poderosa ferramenta para construção de aplicações diretamente no banco de dados.

Esta ferramenta é chamada de stored procedure ou, em português, procedimentos armazenados. Principalmente pelo fato de termos o código do procedimento armazenado diretamente no banco de dados, a execução e resposta passa a ser bem rápida, oferecendo uma melhor performance à aplicação final.

Stored Procedures nada mais são que códigos desenvolvidos em linguagem PL/SQL e são objetos no banco de dados. Sua implementação se dá através de três tipos de objetos que são as procedures (procedimentos), functions (funções) e packages (pacotes).

Está série de artigos abordará exatamente estes três objetos do banco de dados, fechando assim todo o assunto sobre stored procedures.

O ambiente

Neste artigo, utilizei um Oracle Database 10g Enterprise Editon Release 10.2.0.1.0 em um banco de dados criado através do utilitário DBCA (Database Configuration Assistant), onde selecionei a opção de instalação dos esquemas de demonstração. Utilizaremos o velho e bom esquema de demonstração SCOTT cuja senha inicial continua sendo TIGER. O Oracle 10g, por padrão, mantém a conta travada (locked), não se esqueça de conectar-se como SYS e destravá-la. Na primeira conexão feita com o usuário SCOTT, será solicitada a alteração da senha.

Caso já possua um banco de dados criado e o esquema SCOTT não tenha sido instalado, você poderá fazê-lo manualmente executando o script utlsampl.sql, que pode ser encontrado no diretório ORACLE_HOME/rdbms/admin/ (barra invertida - \ - no Windows).

A Listagem 1 apresenta os passos necessários para a criação do ambiente.

Listagem 1. Criando o esquema SCOTT ou destravando-o, caso já esteja criado.

SYS@RRDB> -- Criando o esquema SCOTT manualmente.

SYS@RRDB> @?\rdbms\admin\utlsampl

 

SYS@RRDB> -- Destravando o esquema SCOTT, caso o mesmo tenha sido criado juntamente com o BD.

SYS@RRDB> ALTER USER SCOTT ACCOUNT UNLOCK;

User altered.

 

SYS@RRDB> -- Conectando com o usuário SCOTT.

SYS@RRDB> conn scott@rrdb

Enter password: *****

Connected.

 

Apenas um parêntesis, RRDB é o nome da instância que estou utilizando.

Procedures

Uma procedure em PL/SQL é um programa autônomo compilado em um esquema de banco de dados Oracle. Em outras palavras, é um objeto de banco de dados que possui um “dono” (OWNER) e um código compilado (PL/SQL).

Uma procedure pode executar várias ações ou somente uma, que pode ser nada mais nada menos que uma simples chamada de outra procedure.

Quando a procedure é criada, o comando CREATE PROCEDURE irá inserir o nome deste novo objeto no dicionário de dados do Oracle. A Figura 1 mostra a estrutura básica de uma procedure, que é a mesma tanto para simples procedures autônomas quanto para procedures do corpo de um pacote (package), que veremos mais adiante.

 

Figura 1. Estrutura básica de uma procedure (ou corpo de pacote).

Os componentes chave da procedure, onde efetivamente escrevemos o código são:

·declaração: é o local onde declaramos as variáveis que serão utilizadas na procedure. Pode-se ter também a definição de tipos (types) e pode-se ainda declarar exceções, que deverão ser manipuladas localmente e nenhum programa que “chamou” a procedure terá acesso a esta exceção;

·corpo da procedure: aqui vai toda a codificação em PL/SQL. Qualquer estrutura PL/SQL pode ser usada como loops, desvios condicionais (if-then-else), etc.;

·manipulação de exceções: esta seção da procedure é opcional. É aí que faremos o tratamento de erro, ou seja, como a procedure se comportará caso determinado erro ocorra. É importante ter em mente que, uma vez tratado, o erro “deixa de existir”, evitando que a procedure seja “abortada”.

 

Vejamos agora a sintaxe de criação de uma procedure (Listagem 2).

Listagem 2. Sintaxe de criação de uma procedure.

CREATE [OR REPLACE] PROCEDURE [schema.]nome [(parâmetro_1 [,parâmetro_2 ...])]

   [AUTHID DEFINER | CURRENT_USER]

IS

   [declaração]

BEGIN

   corpo da procedure

[EXCEPTION]

   manipulação de excessões

END [nome];

 

Para esta sintaxe, os componentes são:

·CREATE [OR REPLACE]: palavra chave para criar o objeto (no caso, a procedure). A chave REPLACE é opcional, contudo, se omitida e já existir uma procedure com o mesmo nome, a criação não será feita, retornando um erro. A chave REPLACE irá simplesmente sobrescrever o código da procedure com o mesmo nome, permitindo a criação da procedure;

·schema: define o nome do “dono” (owner) da procedure e é opcional. Caso seja omitido, o “dono” da procedure será o usuário que a está criando e caso seja definido como “dono” um usuário diferente do corrente, este deverá ter privilégio de criação de procedure em outro esquema (privilégio CREATE ANY PROCEDURE);" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados