我尝试执行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的安装中,不会发生此错误。
请,有人可以解决吗?!