[firebase-br] Tratamento de erros em SP II "A missão"

Luiz Carlos luiz em rolamentosradial.com.br
Sex Nov 25 14:26:40 -03 2005


Boa Tarde Lista!

Consegui criar uma stored procedure da seguinte forma:

CREATE  PROCEDURE NOVO_PEDIDO (
    PE_COD_COTACAO INTEGER,
    PE_DATA DATE,
    PE_CODCONTA INTEGER,
    PE_OBS_ESTOQUE BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PE_COND_PGTO INTEGER,
    PE_OBS_NOTA BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PE_TIPO_FRETE INTEGER,
    PE_TIPO_PEDIDO CHAR(1),
    PE_TRANSPORTADORA INTEGER,
    COD_USU INTEGER,
    PE_REF_PED_CLIENTE VARCHAR(50))
RETURNS (
    O_MENSAGEM VARCHAR(255))
AS
DECLARE VARIABLE V_DATA_ERRO INTEGER;
begin

      insert into pedido_venda values                                 
(:pe_cod_cotacao,0,null,null,:pe_cond_pgto,:pe_transportadora,:pe_codconta,:pe_ref_ped_cliente,null,:pe_obs_estoque,:pe_obs_nota,null,:pe_tipo_frete,:pe_tipo_pedido);
  o_mensagem = 'Pedido Efetuado com Sucesso! Aguardando Liberação ou 
Faturamento!';

   when SQLCODE -530 do
   begin
    select current_date from rdb$database into :V_DATA_ERRO;
    insert into log values (:V_DATA_ERRO,'ERRO AO CRIAR UM  NOVO PEDIDO, 
A SEGUINTE COTAÇÃO: '||Cast(:pe_cod_cotacao as varchar(4)) ||' NÃO 
EXISTE',:cod_usu);
    o_mensagem = 'Ocorreu um erro ao gerar o pedido de vendas! Entre em 
contato com o CPD para maiores informações!';
    suspend;
   end
end

ela compila belezinha, mas quando vou debugar ela e propositalmete jogar 
um valor que vá gerar o erro o banco informa que o erro ocorre mas não 
passa pelo bloco de tratamento de erro! :-\

o que estou fazendo de errado por favor!

att.
-- 


------------------------------------------------------------------------
Luiz Carlos da Silva Soares
Analista de Sistemas 	  	
  	 
  	
 

Importadora de Rolamentos Radial Ltda.
  	[11] 3346-3731
  	www.rolamentosradial.com.br <http://www.rolamentosradial.com.br/>
  	luiz em rolamentosradial.com.br <mailto:luiz em rolamentosradial.com.br>
  	 




Mais detalhes sobre a lista de discussão lista