當前位置:首頁 » 服務存儲 » 存儲過程事務
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲過程事務

發布時間: 2022-01-26 11:18:56

sql 存儲過程和事務問題

事務格式
CREATE PROCEDURE PRO_NAME(
P1 NVARCHAR(10)
P2 INT
)
AS
BEGIN TRANSACTION --開始事務
SQL 語句
IF @@ERROR<>0 --有錯誤
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
GO

❷ oracle 一個存儲過程可以包含幾個事務,為什麼

每一個commit前都是一個事務。

至於為什麼?因為Oracle支持事務啊。

❸ 存儲過程和事務有什麼區別和聯系

事務中可以有存儲過程 存儲過程中也可以有事務 事務是一系列的對資料庫的操作,這些操作包括存儲過程,更改語句及其它操作。開始語句是BEGIN TRANSACTION (事務開始),結束語句有兩種,一個是ROLLBACK--回滾,一個是--commit提交事務的所有操作。 存儲過程是實現一定功能的語句組成的程序段。可以包括事務,也可以在某事務當中。 這是一個包括一個事務處理過程的存儲過程,並且在事務中也包括另一個存儲過程的操作: CREATTE PROCEDURE MYPROCEDURE AS BEGIN TRANSACTION--開始一個事務 UPDATE TABLENAME SET ABC='DEF' WHERE ......--操作 EXEC OTHERPROCEDURE '參數' --事務中包括的存儲過程 IF @@ERROR>0--操作如果失敗 BEGIN ROLLBACK TRANSACTION--回滾 RAISERROR('更改數據失敗!

❹ oracle 存儲過程事務控制

把第一個commit去掉既可,如下:

create or replace procere aaa is
var2 number;
begin SELECT Seq_Tbtopic.nextval INTO var2 FROM al;
insert into tbTopic values (var2 , 1, 1, '口語3333',1,3,2,'','');

insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','ck','/kangsi/Resource/test/B1/1_2_2_1_Emily_ck_.mp3','ck');

commit;
end aaa;

❺ SQL的存儲過程和事務是怎麼回事

存儲過程就相當於編程語言中的函數或方法,根據用戶給定的參數執行一段代碼
例:你給我20分,我從鍵盤輸入文字,回答問題,並提交答案.我所做的就是一個存儲過程,你給的20分是參數,你給的分多,我就回答的詳細
事務是一種機制,確保一組資料庫命令,要麼全都執行,要麼都不執行
例:你到銀行轉帳1000元到我的賬戶里,當錢剛從你的賬戶里取出來(還沒來的及轉入我的賬戶),突然斷電了,這時你的賬戶就莫名其妙的損失了1000元,事務就是為了避免這種情況,只有當你的賬戶減少1000,並且我的賬戶存入1000之後,這個轉帳才算成功,所以就要將"存款"和"取款"寫到一個事務中去

❻ 多個存儲過程可否在一個事務中

謝謝,意思 在任何子存儲過程只要不加COMMIT ,EXCEPTION 代碼,一旦任何一個子存儲過程有任何異常都會自動拋到最外層,然後由主存儲過程回滾,那麼最外層的主存儲過程需要加EXCEPTION,COMMIT代碼么?
我理解,猜想啊,主存儲,子存儲都不加COMMIT,EXCEPTION,全部交給ORACLE 去處理,那麼ORACLE 就默認採取一個事務了,只要一個子存儲有異常,那麼,整個事務就回滾,YES/NO?

❼ mysql 存儲過程怎麼設置事務

CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#聲明變數flag,將參數值賦給該變數
DECLARE uuidStr VARCHAR(32);#聲明一個長度為32位的字元串
DECLARE currentTime TIMESTAMP;#聲明一個類型為時間戳的變數
declare err INT default 0;#聲明一個整形變數err,默認值是0
declare continue handler for sqlexception set err=1;#當sqlexception handler捕捉到異常時,設置err=1

START TRANSACTION;#開始事務
WHILE flag>0 DO #注意: while不能空實現(在while塊中,裡面必須有語句)
#uuid()函數得到的字元串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除裡面的-,得到一個32位的字元串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當前的時間
SET currentTime = CURRENT_TIMESTAMP();
#執行插入語句,注意連接字元串的函數concat(str1,str2,...);其中str..也可以是數字類型
INSERT INTO
表名稱
(id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
VALUE
(uuidStr,CONCAT('事件標題',flag),CONCAT('關鍵字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
#每循環一次,flag要減去1,注意沒有flag--的語法
set flag = flag-1;
#在這里測試當err=1時,事務是否有了回滾,測試ok
#IF flag=7 THEN #注意在procere中給變數賦值要用到set,或在變數聲明時用default來父子,所以=號可以用來比較兩邊的值是否相等,<=>也可,區別先不去糾結。
#set err=1;
#END if;
END WHILE;

IF (err=0) THEN
commit;
select 'OK';
ELSE
rollback;
select 'err';
END IF;
END;

❽ 什麼時候用事務,什麼時候用存儲過程

存儲過程是:
通過一系列的SQL語句,
根據傳入的參數(也可以沒有),
通過簡單的調用,
完成比單個SQL語句更復雜的功能,
存儲在資料庫中的SQL程序段。

事務是一系列的數據更改操作組成的一個整體。一旦事務中包含的某操作失敗或用戶中止,用戶可以控制將事務體中所有操作撤消,返回事務開始前的狀態。
事務中的操作是一個整體,要麼整體完成,要麼全部不做。從而保證了數據的完整性。