Procedure Inserindo registro duplicado...

Firebird

29/09/2006

tenho a seguinte procedure no BD

CREATE PROCEDURE INSERT_MANUTENCAO_CORRETIVA (
  I_TIPO_MANUT CHAR(1),
  I_STATUS_OS CHAR(1),
  I_COD_COLABORADOR CHAR(15),
  I_ENDERECO_MANUT VARCHAR(150),
  I_COD_GRUPO_PAT CHAR(15),
  I_COD_SUB_GRUPO_PAT CHAR(15),
  I_COD_CONJUNTO CHAR(15),
  I_DATA_PREVISAO DATE,
  I_USUARIO VARCHAR(20),
  I_DATA_CADASTRO DATE,
  I_SOLICITANTE CHAR(15),
  I_DESC_SOLICITACAO VARCHAR(200)
) RETURNS (
  C_COD_OS CHAR(15)
) AS 
DECLARE VARIABLE V_COD_OS CHAR(15);
begin
    select coalesce(MAX(C_COD_OS), 0)
    from OS0100 
    into :C_COD_OS;
    select C_RESULTADO from F_Zeros(:C_COD_OS, 1, 15) into :V_COD_OS;
    insert into OS0100 (C_COD_OS, C_TIPO_OS, C_STATUS_OS, C_COD_COLABORADOR,
            C_ENDERECO_MANUT, C_COD_GRUPO_PAT, C_COD_SUB_GRUPO_PAT, C_SOLICITANTE,
            C_DESC_SOLICITACAO, C_COD_CONJUNTO)
    values (:V_COD_OS, :I_TIPO_MANUT, :I_STATUS_OS, :I_COD_COLABORADOR, :I_ENDERECO_MANUT, 
        :I_COD_GRUPO_PAT, :I_COD_SUB_GRUPO_PAT, :I_SOLICITANTE, :I_DESC_SOLICITACAO,
        :I_COD_CONJUNTO);
    insert into CM0100 (C_COD_OS, C_COD_GRUPO_PAT, C_COD_SUB_GRUPO_PAT, C_COD_CONJUNTO, 
        C_DATA_PREVISAO, C_COD_COLABORADOR, C_TIPO_MANUT, C_USUARIO, C_ENDERECO_MANUT, 
        C_SOLICITANTE, C_DESC_SOLICITACAO, C_DATA_CADASTRO) 
    values (:V_COD_OS, :I_COD_GRUPO_PAT, :I_COD_SUB_GRUPO_PAT, :I_COD_CONJUNTO, 
        :I_DATA_PREVISAO, :I_COD_COLABORADOR, :I_TIPO_MANUT, :I_USUARIO, :I_ENDERECO_MANUT, 
        :I_SOLICITANTE, :I_DESC_SOLICITACAO, :I_DATA_CADASTRO);
    C_COD_OS = :V_COD_OS;
    suspend;
end


está funcionando, mas insere duas vezes o mesmo registro..

o que pode ser???


Cabelo

Cabelo

Curtidas 0

Respostas

Raserafim

Raserafim

29/09/2006

tente o seguinte nesta linha:
 select [b]DISTINCT[/b](C_RESULTADO) from F_Zeros(:C_COD_OS, 1, 15) into :V_COD_OS;



GOSTEI 0
Raserafim

Raserafim

29/09/2006

foi mal a confusão, tentei colocar em negrito a alteração.

mas fica assim:

select distinct(C_RESULTADO) from F_Zeros(:C_COD_OS, 1, 15) into :V_COD_OS;



GOSTEI 0
Cabelo

Cabelo

29/09/2006

Colega...

Não há necessidade da cláusula distinct, já que o valor retornado é de um procedure com um select count, concatenado de zeros, mas tentei mesmo assim... e continua inserindo o registro duplicado.

O que será que está acontecendo ???

obrigado pela atenção..


GOSTEI 0
POSTAR