機房收費系統—《預存程序》,《預存程序》

來源:互聯網
上載者:User

機房收費系統—《預存程序》,《預存程序》

        前兩天部落格寫了視圖和觸發器,本來不想寫預存程序了,想想會用就行了.但是自己在用的過程中越到很多問題,不做個總結一定還會用錯的.


          機房收費系統裡我為什麼要用它呢?

         在這之前我的回答是:因為大家都在用,所以一定會用到.

現在我的回答是:因為它可以將常用的或者很複雜的工作,用SQL語句寫好並儲存起來,使用者在可以直接通過預存程序的名稱進行調用。

 

相對於使用SQL語句,預存程序的好處是:

1、執行速度快

預存程序建立的時候,資料庫已經對其進行了一次解析和最佳化,預存程序一旦執行,就會保留在記憶體中,下次再執行同樣的預存程序就可以直接調用。

2、減少網路通訊量

如果預存程序包含上百條行SQL語句,其效能一定會比一條一條調用SQL語句高。

3、適應性強

預存程序對資料的庫的訪問是通過預存程序來進行的,所以資料庫開發人員可以在不改動預存程序介面的情況下對資料庫進行改動,這些改動不會對應於程式造成影響。

 

在機房收費系統中,我們是怎樣用的呢?

 

首先,要瞭解一下預存程序的命名。

一開始,我不知道怎麼命名,是"proc_"還是"sp_"呢?糾結也不能解決問題,還是上網查查實際些。

所有的預存程序必須有首碼"proc_",而所有的系統預存程序都有首碼"sp_",以sp_為首碼的命名會啟動並執行稍微緩慢一些,因為SQLServer將首先尋找系統預存程序。

 

我是在組合查詢裡用到了預存程序。

-- =============================================-- Author:<趙亞盟>-- Create date: <2014年8月12日21:14:53>-- Description:<組合查詢>-- =============================================ALTER PROCEDURE [dbo].[proc_GroupInquire]                   --預存程序名稱-- Add the parameters for the stored procedure here@comName1 varchar(10),                              --定義參數@ComInstruction1 varchar(20),@txtInquire1 varchar(20),@comName2 varchar(10),@ComInstruction2 varchar(20),@txtInquire2 varchar(20),@comName3 varchar(10),@ComInstruction3 varchar(20),@txtInquire3 varchar(20),@comrelationship1 varchar(20),@comrelationship2 varchar(20),@tableName varchar(20)ASdeclare @TempSql varchar(500)    --臨時存放Sql語句BEGINSET @TempSql ='Select * from '+@tableName +' Where '+@comName1 +@ComInstruction1 +char(39)+@txtInquire1 +char(39)if @comrelationship1 !=''BEGINSET @TempSql =@TempSql +@comrelationship1 +char(32)+@comName2 +@ComInstruction2+char(39)+@txtInquire2+char(39)if @comrelationship2 !=''BEGIN SET @TempSql =@TempSql +@comrelationship2 +char(32)+@comName3 +@ComInstruction3+char(39)+@txtInquire3+char(39)end    endExecute(@TempSql)END

         D層調用時我們就可以把以前的SQL語句刪了,直接去調用預存程序了。


 Dim strSQL As String = "proc_GroupInquire"   '調用預存程序

       上 一篇部落格總結了一下觸發器,米老師問我觸發器和預存程序有什麼區別嗎?

       毋庸置疑,首先觸發器就是一種特殊類型的預存程序,他們都是SQL語句集.

       不同點是觸發器是通過事件執行觸發而被執行的,而預存程序是通過儲存名稱名字直接調用.觸發器必須依附於一個特定的表,預存程序可以不依附.簡單的說就是觸發器根據條件自動執行,預存程序需要手動調用.

       預存程序時資料庫中一個重要的對象,任何一個設計良好的資料庫應用程式都應該考慮使用預存程序。

       對預存程序的使用還不是很熟練,有什麼錯誤希望大家給予指出,Thanks!




C語言 機房收費管理系統

C語言 機房收費管理系統
懸賞分:0 - 離問題結束還有 14 天 23 小時
要求:
(1)輸入功能:輸入若干名學生的學號、班級、姓名、開始上機時間和結束上機時間。
(2)計算功能:計算每個學生的上機費用(計算公式:上機費用=(結束上機時間-開始上機時間)*收費標準,(以分鐘為單位))
(3)修改功能:修改學生上機的個人檔案(如:增添或刪除)
(4)查詢功能:按條件(班級、學好、姓名)查詢學生上機資訊,並能顯示查詢學生的相應全部檔案。
 
機房收費管理系統

上網下載一下,好多的
 

相關文章

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.