这个问题是在我大学的一次实践考试中提出的。问:表格具有以下列标题/列:
medicine_name,medicine_manufacture_date,medicine_expiry_date.
正如列头名称所描述的那样,它们中包含有关药物的相应数据。现在他们要求编写一个 pl/sql 块来列出所有已过期的药物名称(即当前系统日期大于药物的过期日期值)。我强烈认为必须将顺序连续整数列(如 1,2,3,...n)添加到表中,这将作为每个药物名称的主键。药物名称是唯一的,但要执行迭代他们应该拥有一个整数主键的操作。在不分配整数主键的情况下仍然可以获得结果吗?
我更改了表格并为每条记录分配了主键并编写了以下块...它有效,但我想在不分配主键的情况下这样做。所有可能的聪明方法都将受到崇拜!请建议更正我的代码中的任何类型......我的代码如下:
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;
/