欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

為代碼減負之<二>存儲過程(SQL)

系統 1778 0

在上篇博客中介紹到了觸發器的使用,而且當中也提到了觸發器是個特殊的存儲過程,那么什么是存儲過程呢?他們

兩個又究竟有什么差別呢?

事實上最基本的差別就是,觸發器是當滿足條件時系統自己主動運行的,而存儲過程是手動調用的。

?

簡介

?

什么是存儲過程?

定義:將經常使用的或非常復雜的工作,預先用SQL語句寫好并用一個指定的名稱存儲起來,用戶通過指定存儲過程的名字

并給出參數(假設該存儲過程帶有參數)來調用它。

說到這里,可能有人要問:這么說存儲過程不就是一堆SQL語句而已嗎?那么存儲過程與一般的SQL語句有什么差別

呢?

存儲過程有它獨到的長處不單單僅僅是把一堆SQL語句堆積到一塊:

????? 1. 存儲過程僅僅在創造時進行編譯,以后每次運行存儲過程都不需再又一次編譯,而一般SQL語句每運行一次就編譯

一次,所以使用存儲過程可提高數據庫運行速度。

????? 2. 當對數據庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封

裝起來與數據庫提供的事務處理結合一起使用。

????? 3. 存儲過程能夠反復使用,可降低數據庫開發者的工作量

????? 4. 安全性高,可設定僅僅有某此用戶才具有對指定存儲過程的使用權

?

存儲過程的種類:

?

?? 1. 系統存儲過程:以sp_開頭,用來進行系統的各項設定.取得信息.相關管理工作,如sp_help就是取得指定對象的相關

信息

?? 2. 擴展存儲過程??以XP_開頭,用來調用操作系統提供的功能

?? 3. 用戶自己定義的存儲過程,這是我們所指的存儲過程

?

怎樣使用

?

?

這么好的一個東西,該怎么應用在系統中呢?

以機房收費系統的退卡功能為例。

  1. 第一步也是思考,思考這個功能涉及到了幾條SQL語句(假設就一條就不必建立存儲過程了),

把SQL語句都列出來:

delete Card_info? where CID = @CID????????????????????????????????????????????????????????????????? 刪除卡表中相應卡號的信息

delete Student_info?? where SID = @SID?????????????????????????????????????????????????????????????依據卡號相應的學號刪除學生表相應學號信息

insert into ReturnCard_info (CID,ReturnCash ,UID ,Rdate ,Rtime ) values(@CID ,@ReturnCash ,@UID ,@Rdate,@Rtime)???????????????????????????????????????????????添加退卡信息到退卡記錄表

?

  1. 建立存儲過程? 如圖: 在對應數據庫下打開可編程性,新建存儲過程

?????????????????????????????????? ? 為代碼減負之&lt;二&gt;存儲過程(SQL)

  1. 加入對應存儲過程的代碼

      --=============================================

--Author:                牛遷遷

--Create date:           2014年6月11日 

--Description:           退卡,刪除Card_info,Line_info,Student_info,Recharge_info,同一時候加入ReturnCard_info

--=============================================

ALTER PROCEDURE [dbo].[PROC_ReturnCard]                             -- 命名規范   PROC_ + 名稱 

--Add the parameters for the stored procedure here

@CID varchar(20),@ReturnCashvarchar(20),@UID varchar(20),           --  加入用到的參數

@Rdatevarchar(20),@Rtime varchar(20),@SID varchar(20)

AS

BEGIN

--SET NOCOUNT ON added to prevent extra result sets from

--interfering with SELECT statements.

SETNOCOUNT ON;

 

    -- Insert statements forprocedure here                         -- 加入涉及到的SQL語句

deleteCard_info  where CID = @CID

deleteStudent_info   where SID = @SID

insertinto ReturnCard_info (CID ,ReturnCash ,UID ,Rdate ,Rtime ) values(@CID,@ReturnCash ,@UID ,@Rdate ,@Rtime)

END
</span>
    
  1. 調用存儲過程 (D層)

      <span style="font-family:Microsoft YaHei;">
    Public Function ReturnCard(ENCardinfo As EN_Card_info, ENStudentinfo As EN_Student_info, ENLineinfo As EN_Line_info,ENReturnCardinfo As EN_ReturnCard_info) As Integer ImplementsIReturnCard.ReturnCard

        Dim strSql As String ="PROC_ReturnCard"            '這里的strSql不再存放單條SQL語句,而是存儲過程

        '定義所需的參數

        Dim sqlParams As SqlParameter() = {NewSqlParameter("@CID", ENCardinfo.CID),

                                           NewSqlParameter("@SID", ENStudentinfo.SID),

                                           NewSqlParameter("@ReturnCash", ENReturnCardinfo.ReturnCash),

                                           NewSqlParameter("@UID", ENReturnCardinfo.UID),

                                           NewSqlParameter("@Rdate", ENReturnCardinfo.Rdate),

                                           NewSqlParameter("@Rtime", ENReturnCardinfo.Rtime)}

        '注意這里的CommandType不再是文本命令(CommandType.Text)而是CommandType.StoredProcedure

        ReturnclsSqlHelper.ExecAddDelUpdate(strSql, CommandType.StoredProcedure, sqlParams)

 

    End Function
</span>
    

?

??????? 假設沒有存儲過程的話,完畢這個過程,須要編寫五個函數:刪除卡信息的函數、刪除學生信息的函數、刪除

上級記錄的函數、刪除充值記錄的函數、添加退卡記錄的函數;然后再一個個調用,不僅代碼繁多,并且關系亂;使

用存儲過程僅僅須要編寫一個函數就能夠完畢五個函數的工作,使代碼邏輯變得簡單化。

存儲過程和觸發器,事實上就是把SQL語句封裝到了數據庫中,觸發器能完畢的工作,存儲過程一般也能完畢,可是選

擇的時候要優先使用存儲過程。

?

?

資料引用: http://www.knowsky.com/2951.html

為代碼減負之<二>存儲過程(SQL)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品三级国产 | 五月天婷婷基地 | saoav| 黄页网站免费高清在线观看 | 九九免费在线视频 | 天天躁日日躁狠狠躁av麻豆 | 欧美亚洲国产精品第一页 | 黑人巨大videosjapan高清 婷婷在线免费观看 | 开心激情综合网 | 91天堂| 国产日韩欧美一区 | 精品成人久久久 | 在线成人免费观看视频 | 精品久久久久久久久久 | 性欧美26uuu在线观看 | 国产成人在线一区二区 | 午夜免费观看福利片一区二区三区 | 国产成人一区二区三区电影 | 一区二区三区国产在线 | 午夜成人在线视频 | 人人艹人人看 | 亚洲国产天堂久久综合9999 | 中文字幕免费 | 亚洲免费观看在线视频 | 亚洲精品视频久久久 | 成在线视频 | 成人国产精品免费视频 | 很黄很色的小视频在线网站 | 99精品国产高清一区二区麻豆 | 日韩精品 电影一区 亚洲 | av一区二区在线观看 | 精品视频在线免费观看 | 黄色一级在线视频 | 先锋资源站 | 免费在线日韩 | 久久综合性| 成年网站在线观看 | 亚洲不卡视频 | 亚洲人xxxx | 日本三级欧美三级 | 无码AV免费一区二区三区A片 |