1
我有一个在Oracle数据库11g快捷版发布11.2.0.2.0命名INCOMING_MSG表 - 64生产的Oracle PL/SQL包不更新记录
INCOMING_MSG_ID NOT NULL NUMBER(10)
CREATION_DATE DATE
CHANNEL VARCHAR2(50)
MESSAGE VARCHAR2(1024)
IP_ADDRESS VARCHAR2(50)
PARSED NOT NULL NUMBER(1)
我只是创建这个包:
procedure parseMsg
IS
var1 VARCHAR(500);
var2 VARCHAR(500);
var3 VARCHAR(500);
cursor c1 is
SELECT incoming_msg_id
FROM incoming_msg
WHERE parsed = 0;
begin
FOR psd_rec in c1
LOOP
UPDATE incoming_msg SET PARSED=1;
END LOOP;
END;
end;
我得到了运行此查询我的SQLDeveloper的所有记录:
SELECT incoming_msg_id
FROM incoming_msg
WHERE parsed = 0;
然后我的程序运行也从我的sqldeveloper期望执行后所有的记录将与值parsed = 1但不是这种情况,我不明白为什么不。
这是最好的'commit'一次,退出循环之后。 – APC
由@APC修复注意,如果有大的记录数可能是1次提交然后数千记录更好 – user7294900
不正确。这种方法可能导致ORA-01002和ORA-01555错误。更不用说如果程序暂停,就很难恢复。 – APC