create or replace procedure init is
begin
for i in 1..100
loop
insert into ticket values('1111',to_char(i,'0000'));
end loop;
for i in 1..100
loop
insert into ticket values('2222',to_char(i,'0000'));
end loop;
for i in 1..100
loop
insert into ticket values('3333',to_char(i,'0000'));
end loop;
end;
这句话来调用:
begin
init();
end;
买火车票的存储过程:
create or replace procedure sell(trainno varchar2)
is
t ticket%rowtype;//rowtype 表示数据库ticket一个表的类型,t 就是表示一个表
cursor c1(tno varchar2) is
select * from ticket where trainno=tno
for update;//这里要用 is 而且得加上for update 因为后面有删除这个动作
begin
if not(trainno = '1111' or trainno = '2222' or trainno = '3333') then
DBMS_OUTPUT.PUT_LINE('车次不正确');
return;
end if;
open c1(trainno);
fetch c1 into t;
if c1%found then
DBMS_OUTPUT.PUT_LINE('您买的是: ' || trainno || '票的' || t.ticketnum || '号票');
delete from ticket where current of c1;//因为有这句话 所以前面要加上for update
commit;
else
DBMS_OUTPUT.PUT_LINE('没票');
end if;
close c1;
end;