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 > >