【发布时间】:2017-10-11 08:23:14
【问题描述】:
我有一个表Iss_rec,其中包含以下字段:
Iss_No
Iss_date
Mem_No
Book_No
Fine
我需要使用用户定义的函数打印具有最高罚款的记录。 如果只有一条记录,我可以轻松打印它,但对于多行,我不知道该怎么做。在线搜索向我显示了人们使用光标的结果,但我想单独使用函数。
假设数据是:
165 12-Apr-14 15677 978453 50
166 18-Jun-14 15678 978454 50
167 29-Sep-14 15679 978455 25
168 1-Oct-14 15677 978456 0
169 6-Nov-14 15676 978457 0
现在我想打印前两条记录,因为它们使用用户定义的函数具有最高罚款。
这样的?
create or replace function maxf
return number is
total number;
begin
select r.mem_no into total from iss_rec r group by r.mem_no having
r.fine=max(r.fine); return total;
end;
/
【问题讨论】:
-
添加一些示例数据和预期结果,使其更易于跟踪
-
打印记录?在 PL/SQL 中,您可以遍历数据并通过
dbms_output.put_line输出。如果您希望该函数改为返回行,您可以创建一个流水线函数并使用select * from table(myfunction)查询它。 -
如果您尝试过某事或期望从 SO 获得工作代码,您有什么要分享的吗?
-
@dbajtr 添加了一些示例数据
-
@XING 添加了我想出的东西...但它不起作用...至少对于多行...