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

2022-04-29 07:39:00 字數 4699 閱讀 3711

1樓:匿名使用者

儲存過程就相當於程式語言中的函式或方法,根據使用者給定的引數執行一段**

例:你給我20分,我從鍵盤輸入文字,回答問題,並提交答案.我所做的就是一個儲存過程,你給的20分是引數,你給的分多,我就回答的詳細

事務是一種機制,確保一組資料庫命令,要麼全都執行,要麼都不執行例:你到銀行轉帳1000元到我的賬戶裡,當錢剛從你的賬戶裡取出來(還沒來的及轉入我的賬戶),突然斷電了,這時你的賬戶就莫名其妙的損失了1000元,事務就是為了避免這種情況,只有當你的賬戶減少1000,並且我的賬戶存入1000之後,這個轉帳才算成功,所以就要將"存款"和"取款"寫到一個事務中去

2樓:匿名使用者

儲存過程相當於c語言中的函式,它是sql語句和控制流的預編譯集合.儲存過程可包含邏輯控制和資料操控,它可以接受引數,輸出引數,返回單個或多個結果集以及返回值

3樓:匿名使用者

例:(帶的*是引數)

create proc[edure] //name[= 預設值] [output],

.[=.]

assql語句

例:(不帶的)

create proc[edure] //name[ [= 預設值] [output],.[= .] [output],]as

sql語句

output有視為輸出,否則視為輸入

4樓:匿名使用者

詳細解釋

事務與儲存過程是什麼關係?

5樓:匿名使用者

2個不同的東西,沒什麼關係

儲存過程是sql2000開始流行的

儲存過程可以被程式讀取,可以更方法一樣用

6樓:

事務中可以有儲存過程

儲存過程中也可以有事務

事務是一系列的對資料庫的操作,這些操作包括儲存過程,更改語句及其它操作。開始語句是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('更改資料失敗!',16,1)--向前臺報錯

return--返回,不再繼續執行

endelse

commit transaction--操作成功,確認所作修改go

7樓:

有關係.

儲存過程是一組預編譯的sql語句.

事務就是決定當前執行的操作是統一提交,或者是統一回滾.

而且通常情況下,都是儲存過程巢狀事務.

呵呵....

很片面.

8樓:匿名使用者

儲存過程:是sql-server伺服器上一組預先編譯好的t-sql語句。以一個名稱儲存在資料庫中,作為一個獨立的資料庫物件。

有以下優點:

1、執行速度快;

2、提高工作效率;

3、規範程式設計;

4、提高系統安全性。

事務:一般是指使用者定義的一序列操作,這些操作要麼全做,要麼都不做,是不可分割的一個工作單位.他是一個邏輯工作單元,同時又是一個恢復單元,一個事務提交以後資料庫又處與另一個一致狀態.

具體的關於他的操作去找書看吧.

事務和儲存過程的區別??

9樓:匿名使用者

事務是使用者定義的一個資料庫操作序列,這些操作要麼全做,要麼全不做,是一個不可分割的工作單位

儲存過程是一組為了完成特定功能的sql語句集(或者自定義資料庫操作命令集)

10樓:太平洋來的風

感覺樓下的回答很可以.

事務,有隱式事務,也有顯式事務. 我們程式設計常使用顯式事務

11樓:王勒然

同意一樓的答案!!ding

mysql中事務和儲存過程的區別

12樓:匿名使用者

儲存過程是:

通過一系列的sql語句, 根據傳入的引數(也可以沒有), 通過簡單的呼叫,

完成比單個sql語句更復雜的功能, 儲存在資料庫伺服器端,只需要編譯過一次之後再次使用都不需要再進行編譯。主要對儲存的過程進行控制。

事務是一系列的資料更改操作組成的一個整體。一旦事務中包含的某操作失敗或使用者中止,使用者可以控制將事務體中所有操作撤消,返回事務開始前的狀態。

事務中的操作是一個整體,要麼整體完成,要麼全部不做。從而保證了資料的完整性。

mysql中,myisam儲存引擎不支援事務,innodb支援。

兩者都是資料庫中非常重要的知識。

關於儲存過程與事務

13樓:

這兩個概念可以說是兩個範疇的概念,事務是資料庫操作範疇的概念,保證資料庫資料的完整性和一致性;儲存過程是高階程式設計中模組化設計思想的重要內容。

事務是包含一組修改(插入、更新和刪除)的工作的邏輯單位。事務的操作要麼被儲存到資料庫commit,要麼回滾rollback,事務中的所有修改要麼全部提交,要麼什麼也不做,這樣保證了資料庫中資料的完整性和一致性。

資料庫操作中為了完成一個完整的資料庫任務,從而引進高階程式的設計要素。過程就是高階程式設計語言中的模組概念,將一些內部聯絡的命令組成一個個過程,通過引數在過程間傳遞資料來完成一個完整的資料庫任務,這就是模組化設計思想的重要內容。

有的時候可以把一個過程看作一個事務,但是有的過程執行過程中因為滿足某些條件而從過程中跳出,這時就不能把過程看作事務;反之,一個事務可能是一個過程,也可能一個事務中包含對一個或多個過程的呼叫。

二者概念所述的範疇不同,在資料庫中,是相互聯絡相互區別的;而且兩者都是具體的,不是抽象的,因為都可以拿出一段**,說它是事務或是儲存過程。

以上是個人理解,希望對你有所幫助。

14樓:

不對,是兩個概念,儲存過程是完成一定功能的可重複呼叫的程式。

即,儲存過程是程式。

事務是可以整個撤消的一段操作,可能是一個或幾個或部份的儲存過程,也可能是一條或幾條指令,事務是記錄的一系列的操作和變化。

15樓:

事務是要看成一個整體(原子性)要不這件事就全不做,要麼就全都做,而儲存過程就相當於程式語言裡的函式,方便呼叫,這就是我的理解

16樓:

儲存過程是具體的,多語句組成的一個過程,和程式裡的函式差不多

事務是抽象的概念,就是把一件事分成幾個步驟,設定一個點,回滾就是回到前面的一個點

17樓:

你只說對了一部分

他們是配合使用的 如果只是用儲存過程的話 那他則將執行成功的寫入資料庫 而將失敗的拋棄不管 那樣就與普通sql語句沒有區別了

事務是保證成功執行的必要條件 要麼就執行全部 要麼就回滾

18樓:匿名使用者

儲存過程與事務是兩個概念。

事務強調整體性,要麼成功了全部執行,要麼失敗了全部回滾。

儲存過程本身沒有這個特點。

不過,凡事不是定死的,有許多變通的餘地:

第一,你可以用同步的思想強行將儲存過程進行互斥,比如,你的資料訪問層要呼叫某個儲存過程,那麼你用synchronized修飾程式,保證此儲存過程不會被同時多執行緒執行;

第二,你可以在儲存過程裡開啟事務,強制性規定此過程就是一個事務。

19樓:從掃將到少將

儲存過程,可重用需要,效率需要。

事務,不成功,便成仁。^_^

20樓:匿名使用者

想學習煮菜麼!**入:181998152

sqlserver 儲存過程事務回滾怎麼寫?

21樓:

begin tran

。。。。。。

在儲存過程後面加上:

if @@error<>0

rollback tran

else

commit tran

sqlserver儲存過程當有return時事務怎麼寫 5

22樓:匿名使用者

直接在儲存過程結束之前新增以下**:

exception when others then rollback;

解釋:以上語句的意思是當出現任何錯誤的時候,直接回滾整個事務。

備註:儲存過程中建議沒有特殊需求的情況下,在執行結束之前不要進行commit,否則在中途提交,後面的**儲存,只能回滾到commit的位置。

如何使用SQL語句檢視儲存過程的內容

下面這條語句可以檢視儲存過程具體 exec sp helptext 儲存過程名 下面這條語句檢視資料庫中有哪些儲存過程select from sysobjects where type p 利用資料字典檢視檢視當前使用者所有儲存過程及其 select name,text from user sour...

sql中的檢視與儲存過程有什麼不同的

sql中檢視 view 和儲存過程 procedure 的區別 view本身就是顯示一個 view可以顯示出 但是view本身並沒有包括任何資料,view也不接受引數,所以其實view就是一個虛擬的 而不是實際的,所以在需要引數的時候,需要提前在建立view的時候定義好。view一般是給外部非專業i...

在sql中儲存過程的一般語法是什麼

1 建立語法 create proc procedure pro name 預設值 output 預設值 output as sql statements 2 建立不帶引數儲存過程 建立儲存過程 if exists select from sys.objects where name proc ge...