Bom dia.

Estou com um problema neste trecho abaixo que estou batalhando desde segunda feira, mas não consigo entender o motivo do erro. Estou tentando implementar o uso de query's parametrizadas, porém o código abaixo, hora funciona, hora não funciona aleatoriamente, e não consigo identificar o motivo. Já fiz tudo que é imaginável nessa rotina abaixo e ela não funciona. Já descartei as possibilidades de erro de comunicação com o banco, erro nos dados, espaços, tamanho de campo, etc, etc, etc

Inclusive o código original do programa, que mostro no final desta mensagem funciona perfeitamente. Esta faltando alguma coisa que não consigo identificar, ou algum "pulo do gato" que não conheço.

Gostaria de saber se tem algum erro no código abaixo, e se tem alguma forma de exibir a query completa que foi enviada ao banco para poder depurar onde esta acontecendo o erro.

Qualquer dica será muito bem vinda.


Code:
Procedure ManterDados_PTC_Company String sTipoManutencao String sIDConexaoSQL tDados_PTC_Company vtDados_PTC_Company 
    Handle  hoSQL hdbc hstmt
    String  sLinhaSQL sAux
    Integer iCNPJ iRazao iEndereco iNumero iCompl iCEP iCidade iUF iFone iEmail iCodSys
    
    //sTipoManutencao (I)= Inclusão (A)= Alteração
    If (sTipoManutencao="I") Begin
        Move "INSERT INTO ptc.PTC_Company" to sLinhaSQL
        Move (sLinhaSQL*"(CNPJ, RazaoSocial, Endereco, Numero, Complemento, CEP, Cidade, UF, Fone, eMail, CodigoSistemaTogni)") to sLinhaSQL
        Move (sLinhaSQL*"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);") to sLinhaSQL
        
        //Posição dos coringas
        Move 1      to iCNPJ
        Move 2      to iRazao
        Move 3      to iEndereco
        Move 4      to iNumero
        Move 5      to iCompl
        Move 6      to iCEP
        Move 7      to iCidade
        Move 8      to iUF
        Move 9      to iFone
        Move 10     to iEmail
        Move 11     to iCodSys
    End
    If (sTipoManutencao="A") Begin
        Move "UPDATE ptc.PTC_Company" to sLinhaSQL
        Move (sLinhaSQL*"Set RazaoSocial=?, Endereco=?, Numero=?, Complemento=?, CEP=?, Cidade=?, UF=?, Fone=?, eMail=?, CodigoSistemaTogni=?") to sLinhaSQL
        Move (sLinhaSQL*"WHERE CNPJ=?;") to sLinhaSQL


        //Posição dos coringas
        Move 1      to iRazao
        Move 2      to iEndereco
        Move 3      to iNumero
        Move 4      to iCompl
        Move 5      to iCEP
        Move 6      to iCidade
        Move 7      to iUF
        Move 8      to iFone
        Move 9      to iEmail
        Move 10     to iCodSys
        Move 11     to iCNPJ
    End
    
    //*** Conectar ao Servidor de dados
    Get Create U_cSQLHandleManager to hoSQL
    Send SQLSetConnect of hoSQL "MSSQLDRV" ("DFCONNID="-Uppercase(sIDConexaoSQL))
    Get SQLConnect of hoSQL "" "" to hdbc
    If (hdbc<>0) Begin
        Get SQLOpen of hdbc to hstmt
        If (hstmt<>0) Begin


            Send SqlSetParameter of hstmt iCNPJ     (NFeRemoveSeparadores(vtDados_PTC_Company.sCNPJ))
            Send SqlSetParameter of hstmt iRazao    (trim(vtDados_PTC_Company.sRazaoSocial))
            Send SqlSetParameter of hstmt iEndereco (trim(vtDados_PTC_Company.sEndereco))       
            Send SqlSetParameter of hstmt iNumero   vtDados_PTC_Company.iNumero typeNumber
            Send SqlSetParameter of hstmt iCompl    (trim(vtDados_PTC_Company.sComplemento))
            Send SqlSetParameter of hstmt iCEP      (NFeRemoveSeparadores(vtDados_PTC_Company.sCEP))
            Send SqlSetParameter of hstmt iCidade   (trim(vtDados_PTC_Company.sCidade))
            Send SqlSetParameter of hstmt iUF       (trim(vtDados_PTC_Company.sUF))                  
            Send SqlSetParameter of hstmt iFone     (trim(vtDados_PTC_Company.sFone))
            Send SqlSetParameter of hstmt iEmail    (trim(vtDados_PTC_Company.seMail))               
            Send SqlSetParameter of hstmt iCodSys   vtDados_PTC_Company.iCodigoSistemaTogni typeNumber


            Send SQLExecDirect of hstmt sLinhaSQL
            Send SQLClose of hStmt


        End
        Send SQLDisconnect of hDbc
    End
    Send Destroy_Object of hoSQL
End_Procedure

Abaixo o mesmo código sem a inserção dos valores via "SQLSetParameter" que esta funcionando, ou seja, com os mesmos dados:

Code:
                If (SizeOfArray(sRetornoSelect)>0) Begin
                    //Já cadastrado, efetuar atualização
                    Move ("UPDATE ptc.PTC_Company SET RazaoSocial='"-TCOMPANY.Nome-"',Endereco='"-TCOMPANY.Endereco-"',Numero='"-TCOMPANY.NUMERO-"',Complemento='"-TCOMPANY.COMPL-"',CEP='"-NFeRemoveSeparadores(TCOMPANY.CEP)-"',Cidade='"-TCOMPANY.Cidade-"',UF='"-TCOMPANY.UF-"',Fone='"-TCOMPANY.FONE-"',eMail='"-TCOMPANY.EMAIL-"',CodigoSistemaTogni="-String(TCOMPANY.Codigo)-" WHERE CNPJ='"-NFeRemoveSeparadores(TCOMPANY.CNPJ)-"';") to sComandoSQL
                    Send ExecutaComandoSQL sComandoSQL sIDConexaoWEB
                End
                Else Begin
                    //Não cadastrou ainda, efetuar o cadastro
                    Move ("INSERT INTO ptc.PTC_Company (CNPJ,RazaoSocial,Endereco,Numero,Complemento,CEP,Cidade,UF,Fone,eMail,CodigoSistemaTogni) VALUES('"-NFeRemoveSeparadores(TCOMPANY.CNPJ)-"','"-TCOMPANY.Nome-"','"-TCOMPANY.Endereco-"','"-TCOMPANY.NUMERO-"','"-TCOMPANY.COMPL-"','"-NFeRemoveSeparadores(TCOMPANY.CEP)-"','"-TCOMPANY.Cidade-"','"-TCOMPANY.UF-"','"-NFeRemoveSeparadores(TCOMPANY.FONE)-"','"-TCOMPANY.EMAIL-"','"-String(TCOMPANY.Codigo)-"');") to sComandoSQL
                    Send ExecutaComandoSQL sComandoSQL sIDConexaoWEB
                End