Я пытаюсь выполнить функцию PostGreSQL, но получаю ошибку.
Эта функция уже существует в базе данных:
DECLARE
vCur REFCURSOR;
vSql varchar(2000);
vStr varchar(10);
vAux varchar(4000);
vRet bigint;
BEGIN
vRet := '';
-- monta o SELECT dinâmico
vSql := '';
vSql := vSql || 'select SUM(F_PRD_SALDO_PRODUTO(A.CD_EMPRESA, '''|| PI_CD_SALDO ||''', A.CD_PRODUTO, ''' || PI_DT_SALDO::varchar || ''')) ';
vSql := vSql || 'from VR_PRD_PRODEMP A ';
vStr := 'where ';
-- Filtro de empresa
if (PI_CD_EMPRESA IS NOT NULL) then
vSql := vSql || vStr || 'A.CD_EMPRESA IN ( ' || PI_CD_EMPRESA || ' ) ';
vStr := 'and ';
end if;
-- Filtro de produto
if (PI_CD_PRODUTO 0) then
vSql := vSql || vStr || 'A.CD_PRODUTO = ''' || PI_CD_PRODUTO::varchar || ''' ';
vStr := 'and ';
end if;
-- Passo 2: abre e executa o cursor dinâmico usando a cursor variable
open vCur for EXECUTE vSql;
loop
fetch vCur into vAux;
EXIT WHEN NOT FOUND; /* apply on vCur */
vRet := vAux;
end loop;
close vCur;
vRet := coalesce(vRet, '0');
return (vRet)::numeric;
end;
Я пытаюсь выполнить эту команду:
SELECT public.f_dic_sld_prd_produto('301','1',14708,'2019-01-01 00:00:00')
Но она будет следоватьошибка:
ОШИБКА: неверный синтаксис ввода для целого числа: "" Состояние SQL: 22P02 Контекст: функция PL / pgSQL f_dic_sld_prd_produto (текст, текст, bigint, отметка времени без часового пояса) строка 12 при назначении
Примечание. Эта функция используется по умолчанию в системе, используемой нашей компанией.В других установках, использующих Oracle, эта ошибка не возникает.
Пожалуйста, кто-нибудь может помочь решить ее?!