存儲過程小試――結賬
來源:程序員人生 發布時間:2015-04-10 08:18:44 閱讀次數:4652次
組合查詢的時候就遇到了存儲進程,那時候覺得高大上,但是仔細1看,分為倆部份,第1部份是參數,第2部份是sql語句。在結賬和下機的時候遇到了對多個表的增刪改查,學習了1下,覺得對1些簡單的存儲進程也有點得心應手。
存儲進程概況:
存儲進程(Stored Procedure)是1種在數據庫中存儲復雜程序,以便能在外部程序調用的1種數據庫對象,他可以視為數據庫中的1種函數或子程序。說的明白點,也就是對很多條的sql函數進行了封裝,然后在我們的重構D層進行了調用。更加的增強了sql語言的靈活性和利用性。
要寫存儲進程了,我們了解1下存儲進程的格式
create procedure sp_name
@[參數名] [類型],@[參數名] [類型]
as
begin
.........
end
詳細的了解,請查看超鏈接http://baike.haosou.com/doc/2045557⑵164405.html
存儲進程小試:
我們在結賬的時候,點擊結賬按鈕,我們要對student_info,recharge_info,cancelcash_info的狀態進行更新,還要對Daycheck_info表進行插入。所以用存儲進程可以很輕松的解決這多的sql語言的問題。
新建存儲進程:
存儲進程――右擊新建存儲進程。然后在數據庫的右面打開了存儲進程的代碼框,就在里面寫代碼啦。我們寫的代碼應當是CREATE PROCEDURE,然落后行履行,然后保存存儲進程,對存儲進程命名,關閉sql server,重新打開,就會看到我們寫的代碼,在結賬的單擊事件下,我寫的代碼具體以下:
<span style="font-size:18px;">-- =============================================
-- Author: <李芬>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE[dbo].[proc_AlterAccount]
-- Add the parameters for the stored procedure here
@userID varchar(10),
@RemainCash nchar(10),
@RechargeCash nchar(10),
@ConsumeCash nchar(10),
@CancelCsh nchar(10),
@AllCash nchar(10),
@Date nchar(50)
AS
BEGIN
update student_info set ischeck ='已結賬' where userID =@userID and ischeck='未結賬'
update recharge_info set Status ='已結賬' where User_ID =@userID and Status='未結賬'
update cancelcash_info set statue ='已結賬' where UserID =@userID and statue='未結賬'
select * from Daycheck_info where Date =@Date
insert into Daycheck_info values (@RemainCash ,@RechargeCash ,@ConsumeCash ,@CancelCsh,@AllCash,@userID,@Date )
END
</span>
在這段代碼中,我們可以很清楚的看到存儲進程的結構,同時在最后1個參數的后面,也就是as的前面是沒有那個逗號的,寫的時候注意。重新打開就出現了下面我的存儲進程啦。

D層調用存儲進程:
<span style="font-size:18px;"> ''' <summary>
''' 對結賬的單擊事情
''' </summary>
''' <param name="Eaccount"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Iaccount(Eaccount As DayCheckinfo) As Boolean Implements Iaccount.Iaccount
Dim strSql As String
Dim Erecharge As New Entity.Rechargeinfo
strSql = "proc_AlterAccount"
Dim paras As SqlParameter() = {New SqlParameter("@userID", Eaccount.UserID),
New SqlParameter("@RemainCash", Eaccount.RemainCash),
New SqlParameter("@RechargeCash", Eaccount.RechargeCash),
New SqlParameter("@ConsumeCash", Eaccount.ConsumeCash),
New SqlParameter("@CancelCsh", Eaccount.CancelCash),
New SqlParameter("@AllCash", Eaccount.AllCash),
New SqlParameter("@Date", Eaccount.DDate)}
Dim dt As Boolean
dt = Sqlhelper.SqlHelper.ExecuteNoQuery(strSql, CommandType.StoredProcedure, paras)
Return dt
End Function</span>
由于我的sqlhelp僅僅封裝了4個方法,分別為查詢(有參數、沒有參數),非查詢(有參數、沒有參數),所以在寫存儲進程的時候,要把查詢的寫成1個存儲進程,非查詢的寫成1個,不要混了,避免出現沒法調用sqlhelp方法的問題。
甚么新事物,都看著很難,因而不去做,還走老路。因而就和時期脫節啦。卻不知看著難的事情做起來不1定難,甚么都需要1個進程。加油。。。。。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈