Gestão Estratégica Tecnologia

Procedures PL/SQL – Básico

Uma parte importante sobre o ETL é entender como essas ferramentas trabalham na camada semântica. O ETL é feito através de procedures em SQL.

 

E o que é uma procedure?

 
Uma procedure é um bloco de SQL nomeado. Funciona logicamente como uma programação estruturada, se você já teve a oportunidade de estudar Pascal ou C sabe muito bem como funciona. De qualquer forma vamos ver o básico para termos uma ideia.
Para poder criar uma procedure o usuário deve ter permissão create procedure (GRANT CREATE PROCEDURE TO NOME_USUARIO) e para criar a procedure em outro schemas o usuário deve ter permissão alter any procedure (GRANT ALTER ANY PROCEDURE TO NOME_USUARIO).
Vou utilizar a linguagem PL/SQL

Esta é a sintaxe básica para a criação de uma procedure:

image

Onde

·         Replace: Indica que se já existe uma procedure como nome indicado, esta será eliminada e substituída pela procedure que o código criará.
·         Bloco PL/SQL: Inicia-se com um BEGIN e termina com um END ou um END NOME_PROCEDURE. No corpo, entre o inicio e fim, escrevemos os comandos que a procedure irá executar.
·         Parâmetro: Indica o nome da variável que é passada na chamada da procedure ou retornará os valores.
·         Modo: Indicará se o parâmetro é de entrada (IN), saída (OUT) ou os dois (IN OUT). Caso não informemos default será IN.
·         Tipo de Dado: Como o nome diz, indicará o tipo de dados da variável. Pode ser declarado qualquer tipo de dado do SQL ou do PLSQL e não será necessário informar o tamanho.
·         IS|AS: A sintaxe do comando aceita os dois, por convenção usamos IS para criação de procedures. Indica que o algoritmo que se segue deve ser executado quando chamada a procedure.
 

Esse é um exemplo de procedure simples

image

Certo, esta é uma procedure que tem uma única função, inserir um registro de uma determinada tabela.
Vamos analisar sua estrutura.
Começa com a sintaxe de criação ou reposição de uma procedure e seu nome, no caso “inserir”.
A seguir temos o parâmetro, tipo de parâmetro (se é de entrada ou saída) e seu datatype, entre parênteses, seguido pela palavra IS.
Após isso iniciamos nosso algoritmo. Abrimos com “Begin” e se segue em PL/SQL o que queremos que ela faça. Inserir os dados passados pelos parâmetros para tabela chamada “Tb_funcionarios”.
Dizemos também que depois de cumprida esta tarefa ela deve confirmar a alteração com o “commit”. E encerramos a procedure com o “End inserir;” sinalizando que sua função foi cumprida e sua execução terminou.
Para executarmos a procedure, com parâmetros, o comando é:
Exec nome_procedure (valor_parametro);
No caso exemplo então:
 
Exec inserir (215, 9, ‘Emerson Fitipaldi’, ‘R ficticia, 101’, ‘Sao Paulo’, ‘SP’).
Claro que inserir um registro é simples o suficiente, criar uma procedure se torna mais trabalhoso que digitar o próprio comando diretamente. Para que, então, precisaremos de uma procedure. Simples, podemos fazer com que mais de um comando sejam executados, nos poupando tempo. Por exemplo, podemos criar uma procedure que não só insira, mas que caso já exista código de funcionário informado ela atualize os valores passados nos parâmetros.

Vamos ver essa alternativa

image

Nesta alternativa mantivemos os parâmetros passados o algoritmo de inclusão de dados. Só que quando um valor de um campo unique já existe na tabela, não poderá ser repetido na inserção gerando um erro. A novidade desta alternativa está em pedir para a procedure que se houver o erro ela deve atualizar todos os campos daquele registro na tabela e depois confirmar a alteração.
Após a execução do programa a procedure confirmará a alteração e encerrará a atividade.
No caso a clausula “exception when” trata exatamente do erro. Através dessa clausula podemos dizer qual o erro esperado e dizer o que fazer quando este aparecer. Quando eu informo o “others” estou dizendo que deve proceder com a atualização seja o erro que for. Como sempre, não existe uma única solução e sim soluções mais eficazes que possam prever outros erros ou ações.
 
Outras soluções podem ser criadas por procedures no banco de dados. As ferramentas de ETL funcionam com criação e execução de procedures mais complexas que estas.
Caso queira se aprofundar no assunto e buscar por exercícios de procedure recomento o seguinte endereço http://www.univasf.edu.br/~mario.godoy/Aulas-BDII/BD%20II%20-%20Aula%209.pdf, os exercícios começam na pág. 24.
 
Obrigado pela visita e até o próximo Artigo. 
 
Bibliografia:
 
Daniel Rodrigues de Oliveira

Comentários

Deixe uma resposta