Функция PostGreSQL - неверный синтаксис ввода для целого числа - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь выполнить функцию 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, эта ошибка не возникает.

Пожалуйста, кто-нибудь может помочь решить ее?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...