摘要:前言前面關(guān)系數(shù)據(jù)庫(kù)之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)存儲(chǔ)過程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù),本文來介紹一下存儲(chǔ)過程的創(chuàng)建執(zhí)行刪除。
前言
前面關(guān)系數(shù)據(jù)庫(kù)SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)、存儲(chǔ)過程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù),本文來介紹一下存儲(chǔ)過程的創(chuàng)建、執(zhí)行、刪除。(還是以前文中銀行系統(tǒng)為例)
概述語(yǔ)法存儲(chǔ)過程是一組為了完成特定功能的SQL語(yǔ)句集合,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶通過指定存儲(chǔ)過程的名稱并給出參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來執(zhí)行。
--創(chuàng)建存儲(chǔ)過程 CREATE PROC[EDURE] <存儲(chǔ)過程名稱> -- 添加存儲(chǔ)過程所需的參數(shù) [ <@參數(shù)1> <參數(shù)類型1> [= 默認(rèn)值] [OUTPUT], …… <@參數(shù)n> <參數(shù)類型n> [= 默認(rèn)值] [IN|OUT|OUTPUT] ] AS BEGIN -- 這里面可以寫為變量賦值語(yǔ)句 SQL語(yǔ)句塊 END
注意:
其中存儲(chǔ)過程名不能超過128個(gè)字,每個(gè)存儲(chǔ)過程中最多設(shè)定1024個(gè)參數(shù);
存儲(chǔ)過程所需的參數(shù)可有可無(wú),如果有參數(shù)為帶參數(shù)存儲(chǔ)過程,沒有參數(shù)就是無(wú)參數(shù)存儲(chǔ)過程;
帶參數(shù)存儲(chǔ)過程參數(shù)后面有關(guān)鍵字OUT|OUTPUT為帶輸出參數(shù)存儲(chǔ)過程;
[IN|OUT|OUTPUT]介紹:
IN:在參數(shù)后面加了IN關(guān)鍵字的表示為輸入?yún)?shù),默認(rèn)的情況就是輸入?yún)?shù);
OUT:在參數(shù)后面加了OUT關(guān)鍵字的表示為輸出參數(shù);
OUTPUT:在參數(shù)后面加了OUTPUT關(guān)鍵字表示為輸入輸出參數(shù),既是傳入?yún)?shù)也是輸出參數(shù)。
--調(diào)用存儲(chǔ)過程 EXEC<存儲(chǔ)過程名稱> [參數(shù)列表]
--刪除存儲(chǔ)過程 DROP PROC[EDURE] <存儲(chǔ)過程名稱>示例
/* * 查詢交易信息表中總的交易金額,以及支取和存入的總金額,并打印出來 */ --判斷存儲(chǔ)過程是否存在 --存在則刪除 if exists(select * from sysobjects where name = "proc_getTransMoney") drop procedure proc_getTransMoney go --創(chuàng)建無(wú)參數(shù)存儲(chǔ)過程 create proc proc_getTransMoney as begin declare @sum_money money --交易總額 declare @get_money money --支出總額 declare @sav_money money --存入總額 select @sum_money = sum(TransMoney) from TransInfo select @get_money = sum(TransMoney) from TransInfo where TransType = "存款" select @sav_money = sum(TransMoney) from TransInfo where TransType = "取款" print "交易總額="+ltrim(convert(char,@sum_money)) print "存入總額="+ltrim(convert(char,@sav_money)) print "支出總額="+ltrim(convert(char,@get_money)) end go --執(zhí)行存儲(chǔ)過程 exec proc_getTransMoney go /* * 查詢指定賬戶掛失的賬戶信息 */ --判斷存儲(chǔ)過程是否存在 --存在則刪除 if exists(select * from sysobjects where name = "proc_getLostAccount") drop procedure proc_getLostAccount go --創(chuàng)建帶參數(shù)輸出存儲(chǔ)過程 create proc proc_getLostAccount -- @CId varchar(20) OUTPUT as begin select A.CustName as 姓名, A.IDCard AS 身份證號(hào), A.TelePhone as 電話號(hào)碼, C.CardID as 銀行卡號(hào),A.Address as 地址 from AccountInfo as A inner join CardInfo as C on A.CustID = C.CustID where C.CardID =@CId AND C.IsLost = "是" end go --執(zhí)行存儲(chǔ)過程 declare @CardID varchar(20); set @CardID= "銀行卡號(hào)"; exec proc_getLostAccount @CardID output; print @CardID; go
*本文就介紹到這里。
如有疑問請(qǐng)聯(lián)系我。*
原文來自:簡(jiǎn)書
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/17539.html
摘要:前言前面關(guān)系數(shù)據(jù)庫(kù)之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)存儲(chǔ)過程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù)存儲(chǔ)過程,本文來介紹一下事務(wù)的使用。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。 前言 前面關(guān)系數(shù)據(jù)庫(kù)SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)、存儲(chǔ)過程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù)、存...
閱讀 1156·2021-11-24 09:39
閱讀 3626·2021-09-02 15:21
閱讀 2165·2021-08-24 10:01
閱讀 727·2021-08-19 10:55
閱讀 2452·2019-08-30 15:55
閱讀 1214·2019-08-30 14:16
閱讀 2997·2019-08-29 15:17
閱讀 3240·2019-08-29 13:53