Я пытаюсь создать процедуру в Pl / Sql, и я получаю эту ошибку - PullRequest
0 голосов
/ 16 мая 2018

https://imgur.com/a/ll59wjx - Изображение

Я пытаюсь рассчитать текущий запас товара. У меня есть таблица product_reception, в которой я могу рассчитать свой запас. И стол продаж (ванзари).

1 Ответ

0 голосов
/ 16 мая 2018

Публикация кода в качестве изображения обычно плохая идея.

Так или иначе: довольно много возражений:

  • не заключать имя процедуры (или таблицы, столбца, ...) в двойные кавычки
  • имя параметра, чтобы их имя отличалось от имени столбца, например: не cod_pds in number, а par_cod_pds in number
  • объявляйте переменную в разделе объявления , который находится между is и begin. Не используйте var (ключевое) слово. Рекомендуется назвать их так, чтобы это имя отражало тот факт, что это локальные переменные , например l_stoc_pds number
  • не используйте exec в процедуре PL / SQL, особенно для запуска оператора select. exec используется в SQL * Plus для запуска процедуры PL / SQL, например exec calculstoclazi
  • не select into переменная, перед которой стоит двоеточие, а просто имя переменной
  • эти два select утверждения абсолютно одинаковы; Я понятия не имею, что ты хотел этим сделать. Кроме того, перед cod_pds стоит stoc_pds, которое является именем переменной (так что это совершенно неправильно); если имени столбца должно предшествовать что-либо, то это имя таблицы (или ее псевдоним)

Следовательно, код, который может выглядеть как что-то верное, таков; очевидно, результат будет 0 (ноль). Как я уже говорил, эти два selects точно такие же.

create or replace procedure calculstoclazi
  (par_cod_pds  in  number,
   par_rezultat out number
  )
is
  l_stocs_pds     number;
  l_total_vanzare number;
begin
  select sum(cantitate) 
    into l_stoc_pds
    from receptie_marfa
    where cod_pds = par_cod_pds;

  select sum(cantitate) 
    into l_total_vanzare
    from receptie_marfa
    where cod_pds = par_cod_pds;

  par_rezultat := l_stoc_pds - l_total_vanzare;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...