问题:创建一个 Doctor 表(Docname、Qualification、Specialization、Working_shift)。考虑到当天的专业化和工作班次,使用参数化光标检查医生是否有空来为患者服务
我只是在学习数据库,所以如果这个问题看起来微不足道,我为此道歉。
在输入值时获得所需的输出,但我需要另一种方法来解决问题而不使用标志变量(这样我就可以得到异常)......如果我不使用标志,它会打印异常以及文件名和资格
我正在使用 oracle(普通 pl/sql 块中的光标)来执行此查询。
解决方案:
--table creation
create table doctor
(
docname varchar2(20),
qualification varchar2(20),
specialization varchar2(20),
shift varchar2(20)
)
我的解决方案
declare
cursor c1 (specialization varchar2,shift varchar2) is select docname,qualification from doctor
where specialization='&sp' and shift='&shift'
sp doctor.specialization%type;
shift doctor.shift%type;
flag number(10);
begin
flag:=0;
for r1 in c1(sp,shift)
loop
if c1%found then
flag:=1;
dbms_output.put_line('Doctor is available');
dbms_output.put_line('Docname: '||r1.docname);
dbms_output.put_line('qualification: '||r1.qualification);
else
flag:=0;
end if;
end loop;
if flag=0 then
dbms_output.put_line('Invalid specialization/shift');
end if;
end;