Oracle-11g-R2

交易未處理?

  • July 31, 2014

我正在嘗試在我們的生產伺服器上執行之前測試更新,但是在執行我的事務時sqlplus,我似乎無法送出事務或從我的選擇中取回任何數據,我在做什麼錯誤的?

SQL> select activity_message, regexp_replace(activity_message, 'null', new_value) from organization_activity_log where event = 'ADDED' and activity_item = 36 and activity_message = 'Added: null';

ACTIVITY_MESSAGE
--------------------------------------------------------------------------------
REGEXP_REPLACE(ACTIVITY_MESSAGE,'NULL',NEW_VALUE)
--------------------------------------------------------------------------------
Added: null
Added: 1234567891

Added: null
Added: 1234567890 Expires: 12/31/2016

SQL> begin;
2  select activity_message, regexp_replace(activity_message, 'null', new_value) from organization_activity_log where event = 'ADDED' and activity_item = 36 and activity_message = 'Added: null';
3  commit;
4  

Oracle 的事務隱含在sqlplus您已經在其中並且不必啟動它。這意味著你可以做

選擇…更新..回滾…選擇…

如果您不做exit任何事情exit rollback,它將在退出時送出。begin這裡沒有必要。

在 Oracle 中BEGIN啟動一個 PL/SQL 塊。換句話說,BEGIN你應該提供一個程序文本,該程序是用一種與 SQL 有點不同的過程語言編寫的(儘管它有一些相似之處)。您的 sqlplus 已讀取所有內容,但尚未解析或執行任何內容,它正在等待一個END和一行僅包含如下斜杠的行/

set serveroutput on
BEGIN
 dbms_output.put_line('Hello world');
END;
/

引用自:https://dba.stackexchange.com/questions/72792