Overload em Pacotes

Salve, salve, pessoal! Hoje passando por aqui para deixar um post que trata do assunto de Overload em subprogramas nos banco de dados Oracle. Esta técnica é mais conhecida pelos desenvolvedores de PL/SQL e serve para viabilizar a interação do usuário com a chamada de uma função ou procedure dentro de um pacote. Sendo assim, um pacote que encontra-se “sobrecarregado” possui a características de permitir o usuário efetuar a chamada sem necessitar estar amarrado a um tipo de dado.

Alguns pacotes nativos do Oracle possuem essa característica e nós nem nos demos conta. Você já parou para perceber que quando você executa a instrução DBMS_OUTPUT.PUT_LINE(VAR_01) , você nunca liga para o tipo de dado que será colocado na variável VAR_01. Se será um número, uma string ou uma data? Imagine que para um mesmo código, você quer dar a possibilidade ao usuário de efetuar a chamada passando um único parâmetro que pode ser numérico, caracter, LOB ou até mesmo um boolean. É para isso que serve o Overload.

O exemplo que irei exibir é bem simples, portanto, no código abaixo será criado o pacote sobrecarga com os procedimentos execucao que escreverá o valor na tela, referente a cada tipo de chamada. Vejamos abaixo:

pack.sobrecarga

packbody.sobrecarga

sobrecarga.execucao

Percebam que as variáveis declaradas em cada um dos procedimentos são diferentes, assim como os códigos que estão dentro destes. Isso foi feito propositalmente, até mesmo para exemplificar melhor para vocês. Quando forem criar códigos como este, entendam também que existem algumas restrições no uso, entre estas:

  • Subprogramas Standalones não podem ser configuradas, porém você pode utilizar de overload em uma rotina declarada dentro de um bloco PL/SQL anônimo;
  • Subprogramas que diferem somente pelo modo, ou seja, você não pode criar um subprograma com um mesmo tipo porém em um é entrada e no outro saída;
  • Subprogramas com subtipos diferentes, ou seja, um subprograma com overload não pode possuir uma chamada com uma variável do tipo integer e outra real;
  • Subprogramas que diferem somente no tipo de retorno;

Se estas premissas forem cumpridas, você terá configurado com êxito o seu código. Esta técnica pode ser utilizada também em blocos agrupados e métodos de tipo. Bom pessoal, por hoje é só! Aquele abraaaaaaaaaa!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s