Archive for 6月, 2006

Oracle中的rownum

Rownum:
rownum是 oracle 中的伪列,并不真正存在于表中,它只在查询的时候产生。也就是说表中的数据并没有一个真正的物理的列去表示一条记录是第几行,而只是在查询中才会对这些行进行标识。那到底rownum是什么时候赋给行的呢?
rownum是在where条件过滤之后,在任何排序(order by)或聚集(aggregation)之前赋给行的。
同时,只有当rownum被分配给行后才会递增。
rownum的初始值为1。rownum在查询中产生后就不再变化
rownum被分配的过程大致如下:
rownum = 1
for x in ( select * from A )
loop
if ( x satisifies the predicate )
then
OUTPUT the row
rownum = rownum + 1
end if;
end loop;

参考游标(refcursor)的使用

我们知道在sql server中可以直接在存储过程中使用select * from 来产生记录集,但在 oracle 的存储过程里却不可以。怎么办呢?可以用参考游标来实现。
参考游标(ref cursor)从 oracle 7.3开始引入,作用是允许在存储过程,函数,包中返回记录集。
在 oracle 9i之前,参考游标以如下方式定义:
首先定义一个参考游标:
TYPE ref_type_name IS REF CURSOR
[RETURN {cursor_name%ROWTYPE
|ref_cursor_name%ROWTYPE
|record_name%TYPE
|record_type_name
|table_name%ROWTYPE} ];

Page 1 of 11

    搜索本站

    站点日历

    6月 2006
    « 5   7 »
     1234
    567891011
    12131415161718
    19202122232425
    2627282930  

    订阅本站

    文章分类

    最新日志

    热点文章

    日志存档

    常用标签