关于如何写oracle的function欢迎大家来讨论(参与有分)

zhaoyongzhu 2002-08-21 11:08:07
本人想写一些oracle的function,主要的功能类似于oracle内部的function,能够在sql语句内使用。
例如:
SQL> select * from test1;

ID ZYZ1 P1 DOCTIME
---------- --------------- ---------- -------------------
24 dfdf
27 as 2002-05-01 10:12:00
28 as 2002-08-20 15:22:27
23 df0

SQL> select zyz1 ,max(id) from test1 group by zyz1;

ZYZ1 MAX(ID)
--------------- ----------
df0 23
dfdf 24
as 28
如何自己写一个function实现oracle的max的功能。

其实我的本意是想写求secondmax,thirdmax,fourthmax的function。
实现下面的效果:
SQL> select zyz1 ,secondmax(id) from test1 group by zyz1;

ZYZ1 SECONDMAX(ID)
--------------- ----------------
df0 23
dfdf 24
as 27

如果能得到oracle内部的function的原码,参考一下也行!!!

请不要讨论通过其他的方法实现,因为我已经实现了,只是在生成report的时候太慢了。
谢谢了,肯定接贴。
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoyongzhu 2002-08-21
  • 打赏
  • 举报
回复
这些function可以只针对某一个sql语句,那么对于from,where,group by之类的子句我可以写死在function中。关键是如果返回多行,那sql语句怎么认我返回的纪录集。
bzszp 2002-08-21
  • 打赏
  • 举报
回复
这个需要在编译语句的时候就对函数进行调用,不好实现
jlandzpa 2002-08-21
  • 打赏
  • 举报
回复
oracle内部的function的原码不会公开的.
select zyz1 ,secondmax(id) from test1 group by zyz1;
secondmax(id):该函数是如何知道是对zyzl分组? 感觉实现很难.
wolongshan 2002-08-21
  • 打赏
  • 举报
回复
你看看ORACLE的分析函数
或许有点用
3yugui 2002-08-21
  • 打赏
  • 举报
回复
我觉得写这样的函数是可以写,不过比较难,需要传入比较多的参数,而且意义不是很大。应该根据具体情况来实现。
yuxuan 2002-08-21
  • 打赏
  • 举报
回复
这个问题我表示关注!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧