PostGreSQL函数-整数的无效输入语法

时间:2019-02-04 21:40:41

标签: postgresql function syntax casting

我尝试执行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的安装中,不会发生此错误。

请,有人可以解决吗?!

0 个答案:

没有答案