この問題は私の大学のある実技試験で出題されました。Q: テーブルには次の列見出し/列があります:
medicine_name,medicine_manufacture_date,medicine_expiry_date.
列見出しの名前が示すように、それらには薬に関するそれぞれのデータがあります。ここで、有効期限が切れたすべての薬の名前のリストを作成するために、pl/sql ブロックを作成するように要求されました (つまり、現在のシステム日付が薬の有効期限の値よりも大きい)。連続する連続した整数 (1、2、3、... n など) の列をテーブルに追加する必要があると強く思います。これは、各薬名の主キーとして機能します。薬名は一意ですが、反復を実行するには整数の主キーを持つ必要があります。不整数の主キーを割り当てずに結果を取得することはまだ可能ですか?
私はテーブルを変更し、各レコードに主キーを割り当て、次のブロックを書きました...うまくいきましたが、主キーを割り当てずにやりたいです。すべての可能なスマートな方法が愛されます!Plz は私のコード内の任意のタイプの修正を提案します...私のコードは次のとおりです。
declare
a date;
b date;
diff number(10);
medicine varchar(25);
begin
a:=sysdate;
for i in 1..5
loop
select medicine_expiry_date into b from med_details where med_id=i ;
diff:=trunc(a-b);
if
diff>0 then
select medicine_name into medicine from med_details where med_id=i;
dbms_output.put_line(medicine);
end if;
end loop;
end;
/