在oracle里可以动态更新游标吗

[复制链接]
查看11 | 回复1 | 2005-6-23 01:01:12 | 显示全部楼层 |阅读模式
打开一个游标后,可以更新当前游标里后的记录吗?
也即可以更新cursor吗,在loop到下条时,能检验到更新后的记录吗?
下面是我的一个应用,可有问题.
请兄弟们帮助.多谢!
PROCEDURE Message(arg1 IN VARCHAR2,arg2 OUT VARCHAR2,arg3 IN VARCHAR2) IS
CURSOR server_info_Cursor IS
SELECT URL, SEQ,ACTIVE,curr FROM server_infoWHERE active = 'Y' ORDER BY seq for updateofactive ,curr;
v_updateMsg VARCHAR2(256);
BEGIN
IF isSendMsgEnable() = 'Y' THEN
BEGIN
FOR server_info_record IN server_info_Cursor LOOP

-- callibm(server_info_record.url, arg1, arg2, arg3);

arg2 := '4 error.'; -- (for test)

IF (substr(arg2, 0, 1) = '4') THEN

UPDATE server_info SET active = 'N' ,curr = 'N' WHERE seq = server_info_record.seq;

UPDATE server_info SET curr = 'Y' WHERE seq = server_info_record.seq + 1 AND active = 'Y';

EXCEPTION

WHEN OTHERS THEN

writelog('FANG','[AS400_SEND.MESSAGE:SQLERR UPDATEING SERVER INFO]' || sqlerrm);

v_result := '1 UPDATEING SQLERR.';

ELSE

exit ;


END IF;
END LOOP;
END;
arg2 := showServerStatus();
ELSE
arg2 := '0';
END IF;
commit;
END Message;
回复

使用道具 举报

千问 | 2005-6-23 01:01:12 | 显示全部楼层
在oracle里是不可以动态更新正在打开的游标的,
如果你要取出更新后的数据,可以关闭前游标,
重新打开游标就是更新后的数据!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行