Bom dia pessoal.
Alguém que trabalha com FireDAC e postgres poderia me ajudar?
Eu tenho a seguinte instrução SQL:
WITH upsert AS (
UPDATE PUBLIC.TABELA
SET
VALUE1 = :VALUE1,
VALUE2 = :VALUE2,
VALUE3 = :VALUE3,
VALUE4 = :VALUE4,
VALUE5 = :VALUE5
WHERE
KEY1 = :KEY1
RETURNING KEY1
)
INSERT INTO PUBLIC.TABELA
(VALUE1, VALUE2, VALUE3, VALUE4, VALUE5)
SELECT
:VALUE1, :VALUE2, :VALUE3, :VALUE4, :VALUE5
WHERE
NOT EXISTS (SELECT 1 FROM upsert)
RETURNING KEY1Quando eu rodo essa instrução no SQL Manager, substituindo os parâmetros por valores
literais, a instrução roda sem qualquer erro.
Agora vem o meu problema, quando eu rodo essa mesma instrução no FireDAC, deixando os parâmetros e usando a técnica clássica
FireDACDataSet.Params.ParamByName('VALUE1').Value := 'VALOR', o Delphi me dá a seguinte exceção : "Syntax error at or near INSERT". Só que, volto a repetir, se rodar essa instrução no SQL Manager e substituir os parâmetros por valores literais (
porque o SQL Manager não sabe reconhecer parâmetros como o IBExperts [por exemplo]) a instrução roda normalmente.