0

質問: 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;
4

3 に答える 3

0

以下のコードを試してください

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
        raise;
    end if;
end loop;
exception

when others then
dbms_output.put_line('Invalid specialization/shift');

end;
于 2013-08-21T19:49:14.723 に答える