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?
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