Boa noite,
Gostaria de saber por que, e se é necessário usar um begin dentro de outro begin?
Se sim em que situação é aplicável.
Begin dentro de outro begin
- heraldoaraujo
- Rank: Programador Pleno
- Mensagens: 41
- Registrado em: Dom, 19 Fev 2012 12:10 pm
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
As variáveis declaradas dentro de um BEGIN só são visíveis dentro deste begin.
Veja este exemplo: (to criando 2 vezes a mesma variavel, e setando valores pra ela)
Outro motivo pra criar vários BEGIN é poder capturar EXCEPTIONS.
Por exemplo, você faz uma query simples, e se der erro, quer continuar.
É por aí !
Veja este exemplo: (to criando 2 vezes a mesma variavel, e setando valores pra ela)
SQL> set serveroutput on
SQL>
SQL> declare
2 vtemp Number :=10;
3 begin
4 dbms_output.put_line( '1. Aqui o numero é: '||vtemp );
5 --um outro begin aqui!
6 declare
7 vtemp Number :=20;
8 begin
9 dbms_output.put_line( '2. Aqui o numero é: '||vtemp );
10 end;
11 dbms_output.put_line( '3. Aqui o numero é: '||vtemp );
12 end;
13 /
1. Aqui o numero é: 10
2. Aqui o numero é: 20
3. Aqui o numero é: 10
PL/SQL procedure successfully completed
SQL>
Por exemplo, você faz uma query simples, e se der erro, quer continuar.
DECLARE
vtemp NUMBER;
BEGIN
BEGIN
SELECT campo
INTO vtemp
FROM tabela
WHERE campo = 20;
EXCEPTION WHEN NO_DATA_FOUND
THEN vtemp := 0;
END;
--continua o programa...
END;
- heraldoaraujo
- Rank: Programador Pleno
- Mensagens: 41
- Registrado em: Dom, 19 Fev 2012 12:10 pm
Muito obrigado pela explicação dr_gori
- tiago_pimenta
- Rank: DBA Júnior
- Mensagens: 213
- Registrado em: Qua, 29 Jun 2011 9:49 am
- Localização: Barretos / SP
O que o gori disse, chama-se Escopo
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Como em qualquer outra linguagem de programação, em PL/SQL você consegue fazer o aninhamento de blocos e isso é necessário principalmente para isolar código.
Se você tem um bloco PL/SQL com 100 linhas e não quer abortar a execução dele se ocorrer erro por exemplo na linha 30, isole essa linha dentro de outro bloco BEGIN EXCEPTION END, ok?
[]s
Se você tem um bloco PL/SQL com 100 linhas e não quer abortar a execução dele se ocorrer erro por exemplo na linha 30, isole essa linha dentro de outro bloco BEGIN EXCEPTION END, ok?
[]s
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes