欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 成人久久网 | 国产一码二码免费观看 | 国产精品国产三级国产aⅴ入口 | 91国内精品久久久久怡红院 | 亚洲欧美日韩另类精品一区二区三区 | 五月天电影网 | 免费国产在线视频 | 你下面好大好硬好想要 | 午夜院线| 日韩天天干 | 欧美综合国产精品久久丁香 | 日韩在线欧美 | 亚洲福利影院 | 亚洲一区中文字幕 | 免费一级毛片麻豆精品 | 中文字幕网在线 | 玖玖精品 | 欧美激情视频一区二区免费 | 日韩国产欧美在线观看一区二区 | 九九久久久 | 日韩精品视频免费在线观看 | 日本黄色高清网站 | 一区二区影院 | 欧美成人免费高清二区三区 | 国产精品午夜电影 | 99久久综合给久久精品 | 欧美亚洲综合久久 | 亚洲欧美日韩在线一区二区三区 | 国产精品视频免费的 | 国语一级毛片 | 三级网站日本 | www.小视频| 亚洲国产精品一区二区第一页 | 日本免费三级网站 | 丁香六月伊人 | 久久机热综合久久国产 | 91福利精品老师国产自产在线 | 欧美在线性视频 | 日韩a在线看免费观看视频 五月天激情视频在线观看 成人97在线观看免费高清 | 欧美极品bbbbⅹxxxx | 天堂成人A片永久免费网站 奇米影视四色7777 |