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