【機房重構】—預存程序當媒人,重構預存程序媒人

來源:互聯網
上載者:User

【機房重構】—預存程序當媒人,重構預存程序媒人

    以下是本人親眼所見的機房重構帥小夥(簡稱重構),藉助預存程序媒人(簡稱儲存)與資料庫大美女(簡稱:庫)交往的經曆,和大家分享一下。

    那是一個風和日麗的白天,重構帥小夥獨自一人走在處處飄香的初夏的校園中,他一直在思考,如何與庫美女更容易的交往呢?以前重構去找庫美女的時候總是需要先打一個電話(連結一個表),再問問庫美女在哪裡(再連結一個表),然後才能去找庫美女(向兩個表中存入資料);重構絞盡腦汁終於想出了一個辦法, 他通過手機中的GPS(預存程序)直接定位庫美女的位置,然後突然給庫美女一個驚喜,這樣一來二去,他倆終於最後走在了一起。

    一、儲存媒人優點:

        1.預存程序的能力大大增強了SQL語言的功能和靈活性。
        2.可保證資料的安全性和完整性。
        3. 在運行預存程序前,資料庫已對其進行了文法和句法分析,並給出了最佳化執行方案。
        4.可以降低網路的通訊量。
        5.使體現企業規則的運算程式放入資料庫伺服器中集中控制,當企業規則發生變化時在伺服器中改變預存程序即可,無須修改任何應用程式。

    二、儲存媒人缺點:

        1.調試麻煩。
        2.移植問題。
        3.重新編譯問題。
        4.大量使用維護麻煩。

    三、樣本:

        以下是重構註冊中的預存程序:基本原理是先將涉及的表中的所有欄位寫出來(方便D層調用),再將每個表獨立出來並將欄位也寫出來,最後通過判斷是否需要同時向三個表中存入資訊,要麼不存入,要麼存入。

<span style="font-family:SimSun;font-size:24px;">-- =============================================-- Author:        <馬康>-- Create date: <2015-4-26>-- Description:    <預存程序+事務實現學生註冊卡號,涉及到Card_Info、Student_Info、ReCharge_Info表>-- =============================================ALTER procedure [dbo].[PROC_AddCard]@CardID char(10),@Cash char(10),@Status char(10),@Creator char(10),@StudentID char(10),@StudentName char(10),@Sex char(10),@Department char(10),@Grade char(10),@IClass char(10),@OnDate char(10),@OnTime char(10),@Explain char(10),@AddCash char(10),@IDate char(10),@Time char(10)ASBEGINdeclare @Err1 int,@Err2 int,@Err3 intbegin transactionINSERT into Card_Info(CardID,Cash,Status,Creator)VALUES(@CardID,@Cash,@Status,@Creator)set @Err1=@@ERRORINSERT into Student_Info(StudentID,CardID,StudentName,Sex,Department,Grade,IClass,OnDate,OnTime,Explain,Status,Creator)VALUES(@StudentID,@CardID,@StudentName,@Sex,@Department,@Grade,@IClass,@OnDate,@OnTime,@Explain,@Status,@Creator)set @Err2=@@ERRORINSERT into ReCharge_Info(CardID,StudentID,AddCash,IDate,Time,Creator,Status)VALUES(@CardID,@StudentID,@AddCash,@IDate,@Time,@Creator,@Status)set @Err3=@@ERRORif @Err1=0 and @Err2=0 and @Err3=0    COMMIT TRANSACTIONelse    ROLLBACK TRANSACTIONend</span>
      注意:1.第一行中的ALTER是修改,如果你要是建立的話,應該改成:CREATE。

            2.如果表中有自增的識別欄位,不需要在這裡填寫。

            3.主要是程式實體層中的屬性需要與表中的屬性統一。

      下面是我D層中修改的一些代碼:

<span style="font-family:SimSun;font-size:24px;">        Dim sql As String = "PROC_AddCard"  '預存程序名        Dim sqlparams As SqlParameter() = {New SqlParameter("@StudentID", student.StudentID),                                           New SqlParameter("@StudentName", student.StudentName),                                           New SqlParameter("@Sex", student.Sex),                                           New SqlParameter("@Department", student.Department),                                           New SqlParameter("@Grade", student.Grade),                                           New SqlParameter("@IClass", student.IClass),                                           New SqlParameter("@OnDate", student.OnDate),                                           New SqlParameter("@OnTime", student.OnTime),                                           New SqlParameter("@Explain", student.Explain),                                           New SqlParameter("@Status", student.Status),                                           New SqlParameter("@Creator", student.Creator),                                           New SqlParameter("@CardID", card.CardID),                                           New SqlParameter("@Cash", card.Cash),                                           New SqlParameter("@AddCash", ReCharge.AddCash),                                           New SqlParameter("@IDate", ReCharge.IDate),                                           New SqlParameter("@Time", ReCharge.Time)}</span>
    四、總結:

        最近學習了預存程序,給我做機房收費系統帶來了很大的方便,也讓我進一步瞭解到了SQL Server的強大,更加增加了自己求知的慾望與堅強的走下去的信心,希望筆者的這些正能量能夠傳遞給所有的讀者。

        如有錯誤之處歡迎指正留言。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.