Obrigado Roberto mas tratei os exceptions e ainda nao resolveu !!
Entao estou postando aki de novo somente o principal da execuçao !!

Pessoal, veja esta query:

[EMAIL PROTECTED]>SELECT (SYSDATE-MAX(completion_time))*24  encontrado
         2   FROM rman.bp
         3  WHERE  upper(handle) LIKE upper('%full%IGB1%');

ENCONTRADO
----------
25,9330556

1 linha selecionada.

-- Agora, colocarei esta query dentro da proc:

create or replace procedure proc_teste_bkp is
v_esperado number( 5,2 );

begin
SELECT(SYSDATE-MAX(completion_time))*24  encontrado
  INTO v_esperado
  FROM rman.bp
 WHERE upper(handle) LIKE upper('%full%IGB1%');

dbms_output.put_line( v_esperado ); 
end;
/

-- executando a proc:

10:34:15 [EMAIL PROTECTED]>exec proc_teste_bkp;
25,97

Procedimento PL/SQL concluído com sucesso.


-- Trouxe o resultado arredondado de 25,97.

-- Agora qdo tento criar uma variável externa, passando como 
parametro na proc, ele nao consegue mostrar o resultado:

create or replace procedure proc_teste_bkp 
( v_tipe in varchar2,  v_nome in varchar2 ) is

v_esperado number( 5,2 );
begin
SELECT (SYSDATE-MAX(completion_time))*24  
  INTO v_esperado
  FROM rman.bp
 WHERE handle LIKE '%v_tipe%v_nome%';

dbms_output.put_line( 'Aki ele deveria mostrar o valor: ' || 
v_esperado ); 
end;
/

-- executando a proc:

10:40:42 [EMAIL PROTECTED]>exec proc_teste_bkp ('full','IGB1');
Aki ele deveria mostrar o valor:

Procedimento PL/SQL concluído com sucesso.



Alguem poderia me dizer oq acontece ??
Nao tenho expertize em PL !! estou fazendo algo de errado ??

Atenciosamente.



--- Em oracle_br@yahoogrupos.com.br, Roberto Amorim <[EMAIL PROTECTED]> 
escreveu
>
> A select não retorno um linha sequer, verifique se sua cláusula 
WHERE 
> está correta.
> E coloque um tratamento de erro como o que coloquei abaixo:
> 
> create or replace procedure proc_teste_bkp(tipo_bkp in varchar2, 
> nome_banco in varchar2) is
> 
>    v_esperado   number(8, 2);
>    v_encontrado number(8, 8);
> 
> begin
>    -- EXECUTE IMMEDIATE 'ALTER SESSION SET nls_date_format  = 'DD 
MM 
> yyyy hh24 :mi :ss ' ';
> 
>    begin
>       select (case
>                 when to_char(sysdate, 'd') = 1 then 56
>                 when to_char(sysdate, 'd') = 2 then 8
>                 when to_char(sysdate, 'd') = 3 then 32
>                 when to_char(sysdate, 'd') = 4 then 8
>                 when to_char(sysdate, 'd') = 5 then 32
>                 when to_char(sysdate, 'd') = 6 then 8
>                 when to_char(sysdate, 'd') = 7 then 32
>              end) esperado,
>              ((sysdate - max(completion_time)) * 24) encontrado
>         into v_esperado, v_encontrado
>         from rman.bp
>        where upper(handle) like upper('%tipo_bkp%nome_banco%');
>   
>    exception
>       when no_data_found then
>          -- Coloque aqui os procedimento para caso a select não 
encontre 
> informações
>          raise_application_error(-20001, 'Dados não encontrados em 
> RMAN.BP');
>       when others then
>          -- Aqui o erro é de acesso a própria tabela, talvez 
direitos ou 
> outra coisa qualquer
>          raise_application_error(-20002, 'Erro ao tentar acessar 
> RMAN.BP' || chr(10) || sqlerrm);
>    end;
>    dbms_output.enable(1000000);
>    dbms_output.put_line(lpad('_', 67, '_'));
>    dbms_output.put_line('Total de horas esperado para o proximo 
Backup ' 
> || tipo_bkp || ' ' || nome_banco || ': ' || lpad(v_esperado, 
10, ' ') || 
> ' hs');
>    dbms_output.put_line(lpad('_', 67, '_'));
>    dbms_output.put_line('Total de horas encontradas apos o último 
> Backup: ' || lpad(v_encontrado, 18, ' ') || ' hs');
> 
> end;
> 
> Um abraço
> Roberto
> 
> 


Responder a