創(chuàng)建存儲(chǔ)過(guò)程
UserAccount | ||||
UserID | UserName | PassWord | RegisterTime | RegisterIP |
12 | 6 | 6 | 2012-12-31 | 6 |
18 | 5 | 5 | 2013-01-01 | 5 |
19 | 1 | 1 | 2013-01-01 | 1 |
20 | 2 | 2 | 2013-01-01 | 2 |
21 | 3 | 3 | 2013-01-01 | 3 |
22 | 4 | 4 | 2013-01-01 | 4 |
23 | 5 | 5 | 2013-01-01 | 5 |
25 | 7 | 7 | 2013-01-01 | 7 |
26 | 8 | 8 | 2013-01-01 | 8 |
NULL | NULL | NULL | NULL | NULL |
針對(duì)上面的表,我使用存儲(chǔ)過(guò)程對(duì)它做一些操作:
1. 只返回單一記錄集的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure GetUserAccount as select * from UserAccount go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec GetUserAccount
結(jié)果:相當(dāng)于運(yùn)行 select * from UserAccount 這行代碼,結(jié)果為整個(gè)表的數(shù)據(jù)。
2.沒(méi)有輸入輸出的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure inUserAccount as insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9) go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec inUserAccount
結(jié)果:相當(dāng)于運(yùn)行 insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(9,9,'2013-01-02',9) 這行代碼。
3.有返回值的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure inUserAccountRe as insert into UserAccount (UserName,[PassWord],RegisterTime,RegisterIP) values(10,10,'2013-01-02',10) return @@rowcount go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec inUserAccountRe
解釋?zhuān)哼@里的@@rowcount為執(zhí)行存儲(chǔ)過(guò)程影響的行數(shù),執(zhí)行的結(jié)果是不僅插入了一條數(shù)據(jù),還返回了一個(gè)值即 return value =1 ,這個(gè)可以在程序中獲取,稍后在c#調(diào)用存儲(chǔ)過(guò)程中會(huì)有說(shuō)到。
4.有輸入?yún)?shù)和輸出參數(shù)的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure GetUserAccountRe @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec GetUserAccountRe '7',null
解釋?zhuān)篅UserName為輸入?yún)?shù),@UserID為輸出參數(shù)。 運(yùn)行結(jié)果為@userID為COOUT(*)即 =1。
5. 同時(shí)具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure GetUserAccountRe1 @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 return @@rowcount go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec GetUserAccountRe1 '7',null
結(jié)果:@userID為COOUT(*)即 =1,Retun Value=1。
6.同時(shí)返回參數(shù)和記錄集的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure GetUserAccountRe2 @UserName nchar(20), @UserID int output as if(@UserName>5) select @UserID=COUNT(*) from UserAccount where UserID>25 else set @UserID=1000 select * from UserAccount return @@rowcount go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec GetUserAccountRe2 '7',null
結(jié)果:返回執(zhí)行 select * from UserAccount 這句代碼的結(jié)果集,同時(shí)@userID為COOUT(*)即 =1,Retun Value=9。
7.返回多個(gè)記錄集的存儲(chǔ)過(guò)程
-------------創(chuàng)建名為GetUserAccount的存儲(chǔ)過(guò)程---------------- create Procedure GetUserAccountRe3 as select * from UserAccount select * from UserAccount where UserID>5 go -------------執(zhí)行上面的存儲(chǔ)過(guò)程---------------- exec GetUserAccountRe3
結(jié)果:返回兩個(gè)結(jié)果集,一個(gè)為 select * from UserAccount,另一個(gè)為 select * from UserAccount where UserID>5 。
小結(jié):上面我們創(chuàng)建了各式的存儲(chǔ)過(guò)程,下面看我們?cè)赾#中怎樣調(diào)用這些存儲(chǔ)過(guò)程。
本文導(dǎo)航
- 第1頁(yè): 首頁(yè)
- 第2頁(yè): 創(chuàng)建存儲(chǔ)過(guò)程的參數(shù)
- 第3頁(yè): 創(chuàng)建存儲(chǔ)過(guò)程
- 第4頁(yè): c#調(diào)用存儲(chǔ)過(guò)程
- 第5頁(yè): SQLServer數(shù)據(jù)庫(kù)的一些全局變量