SQL儲存過程——機房收費系統結賬的那些事
在機房收費系統中“結賬”窗體中有這樣一個需求:點選“結賬”按鈕以後需要將資料庫中,與已經選擇的操作員使用者名稱有關的所有充值記錄、退卡記錄、售卡記錄中的"isCheck"欄位的未結賬變成已結賬。
這整個的操作過程說的直白一點就是更新資料庫中三個表的資料。以前在學習資料庫的時候就接觸過儲存過程,而這個需求就完全可以封裝為一個儲存過程:
程式碼如下:
Creat PROCEDURE [dbo].[Pro_alterIscheck]
-- Add the parameters for the stored procedure here
@UserIDstr varchar(10)
AS
BEGIN
update Card_Info set isCheck='已結賬' where [email protected] and isCheck ='未結賬'
update Recharge_Info set isCheck='已結賬' where [email protected] and isCheck ='未結賬'
update CancelCard_info set isCheck='已結賬' where [email protected] and isCheck ='未結賬'
END
通過這個需求例項的聯絡自己運用到了資料庫的儲存過程,現在把它總結一下。
儲存過程是在資料庫中,一組為了完成特定功能的sql語句集,經過編譯儲存資料庫中,使用者通過指定儲存過的名字並給出引數,來執行它。
儲存過程具有很重要的作用,無論是在大型資料庫系統中,儲存過程和觸發器具有很重要的作用。無論是儲存過程還是觸發器,都是sql語句和流程控制語句的集合。就本質而言觸發器是一種儲存過程,儲存過程在運算是生成執行方法。所以以後對器執行時執行速度很快。
語法格式:
CREATE PROCEDURE [擁有者.]儲存過程名[;程式編號] sql中的儲存過程及相關介紹
[(引數#1,…引數#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程式行
自己理解的儲存過程
結合網上的概念,和自己的理解,儲存過程更像在vb.net中寫的一個函式,傳入引數就能去執行一系列的操作,返回一個值(或者沒有返回值)。
比如自己寫的判斷文字框是否為空的函式:
Public Module isNulltext
Public Function isNull(txtBox As TextBox, msgStr As String) As Boolean
If Trim(txtBox.Text) = "" Then
MsgBox("請輸入" + msgStr, vbOKOnly, "溫馨提示")
txtBox.Focus()
Return True
Else
Return False
End If
End Function
End Module
傳入引數後,就能直接傳出文字框內是否為空,並給出相應的提示。而同樣的儲存過也是一樣的。當傳入引數後,經過一系列的sql語句,就能得到自己想到的結果。這樣大大的減少了在程式程式設計中對於資料庫的操作。而且將其封裝成一個儲存過程,更方便程式的呼叫,和對資料庫操作語句的修改。
相關推薦
SQL儲存過程——機房收費系統結賬的那些事
在機房收費系統中“結賬”窗體中有這樣一個需求:點選“結賬”按鈕以後需要將資料庫中,與已經選擇的操作員使用者名稱有關的所有充值記錄、退卡記錄、售卡記錄中的"isCheck"欄位的未結賬變成
機房收費系統——結賬
結賬這部分算是機房收費系統的一個難點,之所以它難,是因為這個窗體不光涉及到程式碼,而且還涉及到算數的問題,還和報表有關,所以它是個難點,但是隻要把思路弄清楚了,再難的東西也不怕啦! 思維導圖: 思路有沒有清楚一點呢? 程式碼片段 先讓操作員的名字和label框實現同步:
第一次機房收費系統——結賬
前言:談到結賬,大家都覺得挺難的,當然我也是這麼覺得的,但是通過一段時間的磨練,最終還是解決了,那麼就來分享一下把! 頁面 首先談到頁面,我將臨時收費金額改成了上網收費金額。 彙總的計算 售卡張數 就是你今天所出售的卡數 注意: 是今天售的卡數。 退卡張數
第一次機房收費系統--結賬
前言 初次碰到結賬這個問題,心裡還是有很多的抵觸,覺得太難了,下機的時候就覺得有些困難,因為涉及到了算賬的問題,現在開始結賬了,放眼望去,慢慢的全是賬,不管怎樣,先學做一個會計吧! 功能實現 其實結賬這裡分為兩大部分 一:從資料庫中匯出操作員使用者名稱和真實姓名 需要實現
機房收費系統--結賬(一)
機房收費系統即將接近尾聲了,在敲結賬時因為理不清各個表之間的關係,所以後面進行的也比較慢。通過向別人請教,也上網查了一些,不過在慢慢敲的過程中,逐漸的理清了它的思路。接下來我介紹一下我的想法。 結賬
VB.net版機房收費系統——結賬功能實現(程式碼部分)
實現結賬功能的時候,被選項卡控制元件整的有點鬱悶,瞬間腦袋就凌亂了,聽上去自己好像很可笑的樣子……於是,便去爬巨人的肩膀了~ 看了歡哥的部落格,發現她的結賬部落格是按照“索引”思想寫的,在結賬實體中添加了新的屬性過程(我新增的叫CheckDetail)結賬表中並沒有
機房收費系統學生下機結賬小結
新的 手工 解決 模式 收費 line 崩潰 執行 eas 這幾天一直在考慮機房收費系統學生下機操作。學生下機。一則須要加入學生下機記錄信息。還須要計算學生在整 個上機過程中所花費的金額,而且更新學生剩余金額。那麽如何做在性能上或者擴展上更好一些
機房收費系統個人重構版:軟工文檔中那些圖
甘特圖 模塊 -s 繪圖工具 收費 -m div post 問題 【前言】 圖。提到這個字的時候腦海中就會出現許很多多的圖像,它的重要性相信大家都明確。相比於文字來說它更生動形象正好符合人類大腦的記憶規律。非常多人也知道動畫片制作原理也是用一張張圖
機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)
收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以
資料庫系統概論05-動態SQL&儲存過程&函式
動態SQL 使用SQL語句主變數 EXEC SQL BEGIN DECLARE SECTION; const char *stmt="CREATE TABLE test(a int);"/*SQL語句主變數,內容是建立表的SQL語句*/ EXEC SQL END
【機房收費系統】之結賬
還沒開始做機房時,便聽到有人說,機房慢慢做,尤其結賬那一塊特別難。特別難,到底有多難呢?還沒開始做,心裡便有了一絲害怕。驗SQL視訊時,特意問了問師父,結賬是否真如他們所說,有那麼難。嘉穎師父誠懇地跟我說,沒事,只有你去做了,才知道做出來的成就感。有了嘉穎師父的定心丸,我心裡
機房收費系統之組合查詢的發展過程
下面說下我的組合查詢吧。 在組合查詢這,最早的想法是用structure,因為印象中有一種型別,是可以用int型別來訪問的,可是做的時候發現不是structure,
機房收費系統之結賬總結
【前言】 說到機房結賬,說難不難,說簡單也簡單,只要捋清楚思理接著再寫程式碼就可以了,本次是第一次機房,只是初次接觸結賬的,只要是賬能對的上就可以,這次機房的驗收光結賬我就驗收了三次,還是有個嚴格的師傅好啊,跟我講了很多,正好另一個師傅在做機房重構,一些內容和第一的機房的區
機房收費系統(四)-結賬
【前言】 在寫結賬程式碼之前,我們要明白結賬的含義和思路。 含義:是誰來結賬?結的是誰的賬?這是必須弄明白的。 結賬:是管理員來結賬,管理員結的是操作員的賬。 之前總是聽別人說結賬是個難點,所以心裡有點抵觸,並且不想去做,感覺自己不會做,弄不明白。只有做過之後才
【機房收費系統——報表與vb互動之日結賬和周結賬】
在上一篇中已經介紹了報表模板的製作了,當然我們不能還要介紹報表和vb的互動,當我們建好模板以後就要在vb中引用此報表,下面就結合日結賬和周結賬來介紹報表的使用。 首先我們應該
機房收費系統(1)之結賬
結賬?首先要明白是誰給誰結賬,應該是管理員給操作員結賬,結的是操作員售卡、充值、退卡及臨時使用者消費金額,知道了這個那麼事情就好辦了。。 結賬的窗體: 1、選擇操作員,把對應的
機房收費系統之結賬與報表(二)週報表製作《一學就會傻瓜版》
如果你對機房收費系統的結賬與日結賬、周結賬的關係資料庫表不清楚、可以先補補課 有錯請及時指出、有錯必改、方便大家! 我們要用一個軟體做報表的模板、然後在VB裡面新增部件、程式碼呼叫模板,
機房收費系統——報表(日結賬)
雖然vb自帶了報表,但是,那個我還沒有研究,我和大多數同學一樣使用了grid++report設計器。它提供獨有的報表查詢展示功能,讓報表查詢展示、列印、列印預覽及資料匯出等整合一體化實現。輕鬆
機房收費系統之結賬
看評論,小夥伴們建議畫張流程圖來直觀表示,部落格釋出的意義之一在於廣開言路,察納雅言,故更新部落格,添上流程圖一張,贈與新的讀者~~~ 彙總 充值表中添加了UserID這個欄位,便於在學生註冊的時候就將金額相關資訊存入充值表中,減少了計算的複雜性。
【機房收費系統】——結賬
結賬,結的都是哪些賬,給誰結賬,結賬需要涉及到哪些表?這些都是開始設計程式碼之前首先要想的。 看到這個介面,你會怎麼想?你也許會想,這是給誰結賬,怎麼查的是操作員啊?不該給一般使用者結賬嗎?一個操作員每天給一般使用者進行註冊,充值,退卡等,這些工