oracle 存儲過程設置回滾點,(轉)oracle 存儲過程事宜使用斷點回滾 -savepoint

學習存儲過程中使用斷點回滾事務時,發現目前網絡上存在一個問題,那就是使用斷點回滾后,都忘記了一個很重要的事情,提交事務。雖然使用了斷點回滾,但是斷點回滾不像rollBack或commit一樣結束當前事務,而使用斷點回滾只會回滾到聲明斷點的地方,之前的產生的事務仍需要提交的,如果不提交,事務一直在數據庫中緩存.

Demo:

procedure doSomeThing(p_number out number) as

begin

insert into t_test_user_mingming(id,loginname,password,realname,type)

values(se_test_user_mingming_id.nextval,'xiaoming','1234','小明',1);

p_number := 1;

savepoint ps;--- 設置斷點 ps

insert into t_test_info_mingming(id,pal,type,create_time,note)

values(se_test_info_id.nextval,'我想買臺thinkPad 可以俺莫有錢',1,sysdate,'ceshi');

p_number := 2;

savepoint sp;----設置斷點 sp

insert into t_test_agent(agent_id) values(1);---我這里此行會拋出異常 ORA-01400? 可以替換為下句 手動拋出一個異常

-----RAISE_APPLICATION_ERROR (-20004,'拋出的異常玩玩');

commit;

exception? --捕獲異常

when others then

rollback to ps;? ---- 如果產生異常,回滾到斷點 ps

p_number :=0;

commit;? --- 提交事務

end doSomeThing;

這里本人做了實驗,如果在異常中不加 commit 語句,使用PL/SQL測試時,異常在緩存,t_test_user_mingming 表中沒有數據記錄。

存儲過程里的事務操作:

112652130.gifcreate?or?replace?procedure?pr_mypro2(p_a?in?varchar2,p_b?in?varchar2,p_count?out?number)

112652130.gif

112652131.giftemp?varchar2(1000);???/*定義臨時變量*/

112652130.gifis

112652130.gifbegin

112652130.gif

112652131.gifselect?code?into?p_count?from?table1?where?a=p_a;?/*查詢并返回值*/

112652131.giftemp?:=?p_count;??/*將返回值賦給臨時變量*/

112652131.gifsavepoint?point1;??/*保存點*/

112652130.gif

112652131.gifinsert?into?table2(a,b)values(temp,p_b);?/*將臨時變量值添加到新表的字段*/

112652130.gif

112652130.gifsavepoint?point2;

112652130.gif

112652130.gifinsert?into?

112652132.gif

112652130.gif

112652130.gif

112652130.gif?exception???

112652130.gif??????when???others???then???

112652131.gif??????????rollback?to?savepoint?point1;??/*異常處理,保存點下面的操作都不會被執行*/

112652130.gif?????????return;?

112652130.gif

112652130.gifend;

112652130.gif

保存點(SAVEPOINT)是事務處理過程中的一個標志,與回滾命令(ROLLBACK)結合使用,主要的用途是允許用戶將某一段處理回滾而不必回滾整個事務。

如果定義了多個savepoint,當指定回滾到某個savepoint時,那么回滾操作將回滾這個savepoint后面的所有操作(即使后面可能標記了N個savepoint)。

例如,在一段處理中定義了五個savepoint,從第三個savepoint回滾,后面的第四、第五個標記的操作都將被回滾,如果不使用ROLLBACK TO savepoint_name而使用ROLLBACK,將會滾整個事務處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php tp5清空數據表并主鍵,tp5數據庫——更新數據

更新數據更新數據表中的數據Db::table(think_user)->where(id, 1)->update([name > thinkphp]);如果數據中包含主鍵,可以直接使用:Db::table(think_user)->update([name > thinkphp,id>1]);update 方法返回影響數據的條數,…

oracle幾個網絡,ORACLE網絡的幾個重點概念

數據庫名(DB_NAME)、數據庫實例名(INSTANCE_NAME)、操作系統環境變量ORACLE_SID、數據庫服務名 (SERVICE_NAME)、數據庫域名(DB_DOMAIN)以及全局數據庫名(GLOBAL_DB_NAME)是幾個使用Oracle數據庫容易混 淆的概念。1、數據庫名與實例名數據庫名(DB_NAME):是區分數據的…

oracle每季度補丁,Oracle 2020 年第四季度補丁發布

半個月前,也就是 10 月 20 日, Oracle 發布了今年最后一次補丁更新,那么很多人都想打最新的 PSU,理由是有被掃到各種漏洞,有的掃描工具著實太坑,這里就不用說了,前幾天看到蓋總發布的文章2020年…

php flash上傳進度條,PHP_PHP+FLASH實現上傳文件進度條相關文件 下載,PHP之所以很難實現上傳進度條 - phpStudy...

PHPFLASH實現上傳文件進度條相關文件 下載PHP之所以很難實現上傳進度條是因為在我們上傳文件到服務器的時候,要等到文件全部送到服務器之后,才執行相應的php文件。在這之前,文件數據保存在一個臨時文件里面,而php無法獲得這個文件…

oracle截取時間函數6,SQL 取日期部分函數

convert(varchar(10),getdate(),120)這個函數就可以得到日期部分了,我覺得還是比較方便的,我覺得SQL在日期方面,沒有ORACLE函數坐的好。。Sql Server中的日期與時間函數1. 當前系統日期、時間select getdate()2. dateadd 在向指定日期加上一…

oracle 找不到程序,Oracle 找不到監聽程序

Oracle服務器文件 app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.oraSID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME CLRExtProc)(ORACLE_HOME D:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM extproc)(ENVS "EXTPROC_DLLSONLY:D:\…

oracle中的存儲過程教程,oracle 存儲過程

-- 查看系統定時任務SELECT * FROM DBA_JOBS-- 新建定時任務DECLAREjobno NUMBER;BEGINSYS.DBMS_JOB.SUBMIT(JOB > jobno, /*自動生成JOB_ID*/WHAT > qmcb_ls_data;, /*需要執行的存儲過程名稱或SQL語句*/NEXT_DATE > SYSDATE, /*初次執行時間-立即執行*/INTERVAL >…

Oracle segment啥意思,關于oracle數據庫段segment的小結

段(segment)是一種在數據庫中消耗物理存儲空間的任何實體(一個段可能存在于多個數據文件中,因為物理的數據文件是組成邏輯表空間的基本物理存儲單位)今天碰到一個高水位問題:一個分區表,刪除某個分區中的一些數據后,表空間并沒有回…

Linux在文件第一行添加字符,使用shell命令給文件中每一行的前面、后面、指定列添加字符...

shell給一個文件中的每一行開頭插入字符的方法:awk {print "X"$0} fileNameshell給一個文件中的每一行結尾插入字符的方法:awk {print $0"X"} fileNameshell給一個文件中的每一行的指定列插入字符的方法:awk $O$O" …

路由器 刷 linux系統版本,在Linux下用tftp刷寫路由器固件

(以Buffalo WHR-G300N V2路由器為例)以發行版Ubuntu為例(如果你在Windows下,可下載Ubuntu的ISO文件,再用wubi安裝Ubuntu,可免去重新分區的麻煩),下載Buffalo WHR-G300N V2路由器的FTP版固件文件,放到Ubuntu的/home目錄…

linux沒有etho網卡,關于怎么解決CENTOS7沒有ETH0網卡這個問題

CentOS7系統安裝完畢之后,輸入ifconfig命令發現沒有eth0,不符合我們的習慣。而且也無法遠程ssh連接。1.進入目錄/etc/sysconfig/network-scripts/2.將文件ifcfg-ens33重命名為ifcfg-eth0;(注意:修改需要切換至root用戶)3.編輯ifcfg-eth0使用命令&#xf…

linux添加物理卷編輯文件夾,Red hat Linux下的邏輯卷管理器LVM-上

【IT168 專稿】Red hat 下的LVM 上 LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,它為主機提供了更高層次的磁盤存儲管理能力。LVM可以幫助系統管理員為應用與用戶方便地分配存儲空間。在LVM管理下的邏輯卷可以按需改變大小或添加移除。另外,LVM可以…

linux的nfs端口號,#Linux NFS服務 固定端口及防火墻配置#

#Linux NFS服務 固定端口及防火墻配置#1.在Linux上正常安裝NFS服務2.修改/etc/service,添加以下內容(端口號必須在1024以下,且未被占用)# Local servicesmountd 1011/tcp #rpc.mountdmountd 1011/udp #rpc.mountdrquotad 1012/tcp #rpc.rquotadrquotad 1012/udp #rp…

嵌入式linux添加環境變量,Linux環境變量

前言:1. 環境變量是操作系統環境設置的變量,適用于整個系統的用戶進程;2. 環境變量可以在命令中設置,但是用戶注銷的時候將會丟失這些設置值;3. 若要重復適用,則最好在.profile中定義;環境變量的…

eval函數linux,Python中的eval()、exec()及其相關函數

剛好前些天有人提到eval()與exec()這兩個函數,所以就翻了下Python的文檔。這里就來簡單說一下這兩個函數以及與它們相關的幾個函數,如globals()、locals()和compile():1. eval函數函數的作用:計算指定表達式的值。也就是說它要執行…

linux更改語言腳本,Linux shell腳本入門——shell語言腳本【CentOS】

認識腳本是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件。腳本語言又被稱為擴建的語言, 或者動態語言, 是一種編程語言, 用來控制軟件應用程序, 腳本通常是以文本 (ASCⅡ) 保存, 只是在被調用時進行解釋或者編譯。學習shell腳本的用途對于一個合格的系…

linux可用的ftp,linuxunix下有很多可用的ftp服務器

一、ftp服務器簡介linux/unix下有很多可用的ftp服務器,根據這些ftp服務器的可配置性大概可以分為3類:弱、中等、高。功能比較簡單的ftp服務器軟件有“ftpd”和“oftpd”。前者與ftp客戶端工具“ftp”類似,只實現了標準的ftp功能,支…

linux視圖版怎么輸入命令,分享在Linux命令下操作MySQL視圖實例代碼

視圖VIEW命令簡介:VIEW視圖就是存儲下來的SELECT語句數據1。創建視圖命令格式:創建[或更換][ALGORITHM {UNDEFINED | MERGE | 不是Temptable}][DEFINER {user | 當前用戶 }][SQL SECURITY {DEFINER | INVOKER}]VIEW view_name [(column_list)]AS selec…

寶塔linux 做負載均衡,利用BT寶塔面板做網站多服務器負載均衡圖文教程

對于我們做網站的來說,如果流量大了,一臺服務器肯定是不夠的,接下來要考慮很多方面,比如動靜分離、比如數據庫異步,比如負載均衡等等。因為我們很多新手站長都用的是BT寶塔面板,下面蝦皮路就介紹一下利用BT…

c語言程序設計移動字母,C語言程序設計模擬試題二(含答案)

C語言程序設計模擬試題二(含答案)1、下列電子郵件地址中正確的是(其中□表示空格)A) Malin&http://www.doczj.com/doc/2969157fa26925c52cc5bfdc.html B) malinhttp://www.doczj.com/doc/2969157fa26925c52cc5bfdc.htmlC) Lin□Ma&http://www.doczj.com/doc/2969157fa2…