Local Named Blocks

Até agora só trabalhamos com blocos anônimos, vejamos agora alguns exemplos de blocos nomeados locais, ou então local subprograms, que nada mais é que um subprograma, no bloco declare de um bloco PL/SQL. Existem dois tipos: funções e procedures. A diferença entre eles é que a função retorna um valor e a procedure não, é como se fosse um método do tipo void em Java. Podemos criar ambos no bloco DECLARE de um bloco anônimo, ou então de um outro subprograma, vejamos o exemplo de uma procedure em um bloco anônimo.

Ao utilizamos uma procedure local evitamos de escrever várias vezes o mesmo código, aumentando assim a clareza e a lógica, devemos fazer isto sempre que um código se repetir e que não tenha lógica executar esse código sfora desse bloco, por que ser for devemos criar esse subprograma em um package ou como um objeto do schema. Perceba também que temos variáveis com o mesmo nome, a mais interna é variável que sempre será utilizada. Mas, se houver uma tentativa de duas variáveis com o mesmo nome, mas no mesmo bloco, haverá um erro. O mesmo caso seria dois blocos anônimos, um dentro do outro, ou seja, aninhado.

Um problema pode surgir ao invocarmos uma função ou procedure que ainda não foi definida, como no exemplo abaixo.

a2

Percebam que no erro foi mencionada que a função FUNCAO não foi ainda declarada, pois ela foi declarada depois da chamada. Podemos contornar este erro com algo chamado de forward references, ou seja, uma referência de algo que ainda não foi definido, também chamado de stubs. Stubs coloca o nome da função ou procedure no namespace, ou na lista de identificadores, para que o compilador aceite a chamada mesmo antes da implementação. Veja um caso a seguir.

Vejam que agora não foi lançado nenhum erro, mas que o resultado foi retornado: funcao procedure. Nas linhas 2 e 3 estão os stubs informando que procedure1 é uma PROCEDURE e funcao que é uma FUNCTION com retorno de VARCHAR2.

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: