嗨 甲骨文【2】

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

/************************************************

我与游标

/************************************************

使用显式游标

定义游标DECLARE

CURSOR cursor_name IS select_statement;

打开游标OPEN

OPEN cursor_name

提取游标FETCH

FETCH cursor_name INTO variable1,variable2,...;

关闭游标CLOSE

CLOSE cursor_name;

显式游标属性

%ISOPEN判断是否已经打开 打开TRUE

%FOUND是否从结果集中提取到了数据 提取到TRUE

%NOTFOUND是否从结果集中提取到了数据 没有提取到TRUE

%ROWCOUNT返回到当前行为止已经提取到的实际行数

参数游标

以实现使用不同参数值多次打开游标时,可以生成不同的结果集

CURSOR cursor_name(parameter_name datatype) IS select_statement;

使用游标更新/删除数据

CURSOR cursor_name(parameter_name datatype) IS select_statement FOR UPDATE [OF column_reference] [NOWAIT];

FOR UPDATE用于在结果集数据上加行共享锁,以防止其他用户再次行执行DML操作

OF确定那些表要加锁

NOWAIT指定执行时不等待锁,如果其他会话已经在被作用行上加锁,则当前会话显示错误提示

UPDATE table_name SET column=.. WHERE CURRENT OF cursor_name;

DELETE table_name WHERE CURRENT OF cursor_name;

游标循环

Oracle会隐含地打开游标,提取游标并关闭游标

FOR record_name IN cursor_name LOOP

statement1;

statement2;

...

END LOOP;

如果循环时不需要使用任何游标属性,则可直接使用子查询

FOR record_name IN (select_statement) LOOP

statement1;

statement2;

...

END LOOP;

使用游标变量

定义REF CURSOR类型和游标变量

TYPE ref_type_name IS REF CURSOR [RETURN return_type];

cursor_variable ref_type_name;

打开游标

OPEN cursor_variable FOR select_statement;

提取游标数据

FETCH cursor_variable INTO variable1,variable2,...;

关闭游标CLOSE

CLOSE cursor_variable

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航