Erro ao tentar atualizar utilizando procedure

Firebird

05/06/2011

Colega,
a procedure que fiz esta funcionando para inserir:

execute procedure sp_iad_entrada(0,8,'2011-06-04',1,15,2,1,'I');


Mas para atualizar da o seguinte erro:
Error code 335544334, SQL state HY000: GDS Exception. 335544334. conversion error from string "2011-06-04"
At procedure 'SP_IAD_ENTRADA' line: 33, col: 23

Procedimento de atualização

execute procedure sp_iad_entrada(3,8,'2011-06-04',1,15,2,1,'U');


Nilo Souza

Nilo Souza

Curtidas 0

Respostas

Thiago Mury

Thiago Mury

05/06/2011

Nilo, boa tarde.
Posta o código da SP.
Att,
GOSTEI 0
Nilo Souza

Nilo Souza

05/06/2011


Ai esta:

SET TERM ^ ;
CREATE PROCEDURE SP_IAD_ENTRADA (
    P_ID DM_INTEIRO,
    P_IDFORNECEDOR DM_INTEIRO,
    P_DTENTRADA DM_DATA,
    P_IDUSUARIO DM_INTEIRO,
    P_QTDE DM_INTEIRO,
    P_IDPRODUTO DM_INTEIRO,
    P_USUARIO DM_INTEIRO,
    P_OPR DM_OPR )
AS
BEGIN
    execute procedure SP_RESTRICOES(4,:P_USUARIO,NULL,:P_OPR);
  
IF (P_OPR = 'I') THEN
  
        INSERT INTO NF_ENTRADA (
        ID_FORNECEDOR, 
        DT_ENTRADA, 
        ID_USUARIO, 
        QTDE_ENTRADA, 
        ID_PRODUTO, 
        USUARIO_INCLUI 
        )
 VALUES (:P_IDFORNECEDOR,
    :P_DTENTRADA,
    :P_IDUSUARIO,
    :P_QTDE,
    :P_IDPRODUTO,
    :P_USUARIO);
    
        
ELSE IF (P_OPR = 'U') then
        UPDATE NF_ENTRADA SET 
        ID_FORNECEDOR = :P_DTENTRADA, 
        DT_ENTRADA = :P_DTENTRADA, 
        ID_USUARIO = :P_IDUSUARIO, 
        QTDE_ENTRADA = :P_QTDE, 
        ID_PRODUTO = :P_IDPRODUTO, 
        USUARIO_ALTERA = :P_USUARIO 
        WHERE ID_NF = :P_ID; 
          
ELSE IF (P_OPR= 'D') then
        
        DELETE FROM NF_ENTRADA WHERE ID_NF = :P_ID; 
  
END^
SET TERM ; ^

GOSTEI 0
Rafael Mattos

Rafael Mattos

05/06/2011

Seu erro está no modo que vc ta passando a data, vc pode tentar assim


execute procedure sp_iad_entrada(3,8,'04.06.2011',1,15,2,1,'U');
GOSTEI 0
Nilo Souza

Nilo Souza

05/06/2011

Passei assim e continua o erro.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

05/06/2011

há um erro na passagem de parâmetros para a instrução SQL. olhe o trecho do update:

ELSE IF (P_OPR = 'U') then
        UPDATE NF_ENTRADA SET
        ID_FORNECEDOR = :P_DTENTRADA,
        DT_ENTRADA = :P_DTENTRADA,
        ID_USUARIO = :P_IDUSUARIO,
        QTDE_ENTRADA = :P_QTDE,
        ID_PRODUTO = :P_IDPRODUTO,
        USUARIO_ALTERA = :P_USUARIO
        WHERE ID_NF = :P_ID;
         
tanto o campo ID_FORNECEDOR quanto o campo DT_ENTRADA estão recebendo o valor de P_DTENTRADA.

altere para:


ELSE IF (P_OPR = 'U') then
        UPDATE NF_ENTRADA SET
        ID_FORNECEDOR = :P_IDFORNECEDOR,
        DT_ENTRADA = :P_DTENTRADA,
        ID_USUARIO = :P_IDUSUARIO,
        QTDE_ENTRADA = :P_QTDE,
        ID_PRODUTO = :P_IDPRODUTO,
        USUARIO_ALTERA = :P_USUARIO
        WHERE ID_NF = :P_ID;
GOSTEI 0
POSTAR