存储过程出错,pls-00103 出现符号"for"需要在下列之一时:.(*@%&=-+;</>等等 30
createorreplaceproceduredeliver(v_namekc.ypname%TYPE,--要使用的药品名v_numkc.num%TYPE--要使用的药...
create or replace procedure deliver(
v_name kc.ypname%TYPE, --要使用的药品名
v_num kc.num%TYPE --要使用的药品数量
)
as
v_kc number; --库存数
v_left number; --还需调出的数量
v_p_id number; --要调出的药品ID
cursor cur_batchkc(v_id number) is select bnum from batchkc where id=v_id order by validdate for update;
begin
select num,id into v_kc,v_p_id from kc where ypname=v_name;
if v_kc>=v_num then
v_left:=v_num
for iter in cur_batchkc(v_p_id) loop
if iter.bnum>v_left then
update batchkc set bnum=bnum-v_left where current of cur_batchkc;
exit;
elsif iter.bnum=v_num then
delete from batchkc where current of cur_batchkc;
exit;
else
delete from batchkc where current of cur_batchkc;
v_left:=v_left-iter.num;
end if;
end loop;
else
dbms_output.put_line("Not enough in Inventory!");
end if;
end;
这是我的代码,好像是for循环里出了错,不知道到底错在哪里
已经解决了 展开
v_name kc.ypname%TYPE, --要使用的药品名
v_num kc.num%TYPE --要使用的药品数量
)
as
v_kc number; --库存数
v_left number; --还需调出的数量
v_p_id number; --要调出的药品ID
cursor cur_batchkc(v_id number) is select bnum from batchkc where id=v_id order by validdate for update;
begin
select num,id into v_kc,v_p_id from kc where ypname=v_name;
if v_kc>=v_num then
v_left:=v_num
for iter in cur_batchkc(v_p_id) loop
if iter.bnum>v_left then
update batchkc set bnum=bnum-v_left where current of cur_batchkc;
exit;
elsif iter.bnum=v_num then
delete from batchkc where current of cur_batchkc;
exit;
else
delete from batchkc where current of cur_batchkc;
v_left:=v_left-iter.num;
end if;
end loop;
else
dbms_output.put_line("Not enough in Inventory!");
end if;
end;
这是我的代码,好像是for循环里出了错,不知道到底错在哪里
已经解决了 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询