TCSPEXEC com postgres

Boa tarde pessoal! Estou validando a mudança de banco mssql para postgresql. A maior dificuldade esta na migração das procedures personalizadas.

Utilizamos procedures basicamente para fazer uma inserção muito especifica e limitada em uma tabela, e ela retorna o recno. Funciona perfeitamente no mssql. Entretanto no banco do postgres, ela funciona quando eu a chamo pelo dbeaver, mas não funciona quando eu a chamo pelo TCSPEXEC.

Um exemplo , com a entrada de apenas variaveis char:

create procedure zko_insert
    (
    IN_ZKO_MKTPLC varchar(6),
    IN_ZKO_LOJA varchar(2),
    IN_ZKO_GRUPO varchar(14),
    IN_ZKO_ATRIBU varchar(25)
)
LANGUAGE sql
AS $$
    INSERT INTO ZKO010
        (ZKO_MKTPLC,ZKO_LOJA,ZKO_GRUPO,ZKO_ATRIBU)
    VALUES
        (IN_ZKO_MKTPLC,IN_ZKO_LOJA,IN_ZKO_GRUPO,IN_ZKO_ATRIBU)
    ;
$$;

e no advpl

aRet := TCSPExec( 'zko_insert','000001','00','123','456')

não funciona, retorna apenas falha ao executar a procedure.

No dbeaver funciona perfeitamente:

CALL zko_insert ('000001','00','456','123')

Alguém sabe onde esta o erro nesse código?

compartilhar
  • Bruno, se na falha da execução, você chamar um TCSqlError, qual erro ele mostra? Já verificou gerar o trace do DBAccess?

    Daniel Mendes   19 de May de 2022
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags postgres procedure ou faça a sua própria pergunta.