Публикация кода в качестве изображения обычно плохая идея.
Так или иначе: довольно много возражений:
- не заключать имя процедуры (или таблицы, столбца, ...) в двойные кавычки
- имя параметра, чтобы их имя отличалось от имени столбца, например: не
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;