Функция PostGreSQL - неверный синтаксис ввода для целого числа

Я пытаюсь выполнить функцию 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')

Но он получает следующую ошибку:

ERROR: invalid input syntax for integer: "" SQL state: 22P02 Context: PL/pgSQL function f_dic_sld_prd_produto(text,text,bigint,timestamp without time zone) line 12 at assignment

Примечание. Эта функция используется по умолчанию в системе, используемой нашей компанией. В другой установке, использующей Oracle, эта ошибка не возникает.

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

Трудно сказать, в чем проблема, потому что у нас нет ваших таблиц или данных, которые конкретно вызывают ошибку. Отладьте каждую строку и попытайтесь определить источник проблемы.

Kaushik Nayak 05.02.2019 04:09

Вы никогда не должны использовать эту функцию, так как она уязвима для SQL-инъекций.

Laurenz Albe 05.02.2019 08:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
231
0

Другие вопросы по теме