回看存储过程
??????
????? 周六周日寫了些查詢的窗口,感覺沒什么新奇的東西,都是一堆select,后來寫的到了注冊,上下機(jī)等,在一個方法里面,包括了多個增刪改查的過程。可能上一個訪問數(shù)據(jù)庫的過程返回的結(jié)果又是下一個訪問數(shù)據(jù)庫讀取數(shù)據(jù)的參數(shù)。
也就是說,這些對數(shù)據(jù)庫的增刪改查是一個連貫的動作,比方。注冊一個學(xué)生的時候。涉及到注冊金額,這個注冊金額同一時候也要寫到充值表里面去。
既然他們是一起的。后來就非常自然想到了用存儲過程,將多條SQL語句封裝起來,這樣不僅避免了代碼中多次訪問數(shù)據(jù)庫的情況。并且也降低了代碼量。
????? 以下以充值做個DEMO,看一下這個存儲過程:
???
USE [SecondCharge] GO /****** Object: StoredProcedure [dbo].[Recharge] Script Date: 06/09/2014 11:04:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[Recharge] --充值@StuCardNum nchar(10), --卡號@RecTeaName nchar(10), --充值教師@RecRMB money --充值金額asdeclare @FirstRMB money --定義一個上次卡內(nèi)剩余金額的變量declare @RecDate nchar(10) --定義充值日期declare @RecTime nchar(10) --定義充值時間Select @RecDate= CONVERT(varchar(100), GETDATE(), 23)Select @RecTime=CONVERT(varchar(100), GETDATE(), 24)--1,先取出此卡號相應(yīng)的如今的總金額--2,先向充值表里面寫入一條充值記錄--3,然后更新學(xué)生信息表里面的金額--4,最后返回充值信息表select @FirstRMB=StuRMB from T_StuInfo where StuCardNum =@StuCardNum --查詢卡內(nèi)剩余金額insert into T_RechargeInfo values(@StuCardNum,@RecTeaName,@RecDate,@RecTime,@RecRMB,'未結(jié)賬')update T_StuInfo set StuRMB=(@FirstRMB +@RecRMB) where StuCardNum =@StuCardNum --返回信息:充值卡號。上次卡內(nèi)剩余金額,如今卡內(nèi)剩余金額。充值日期。充值時間,充值教師select @StuCardNum as StuCardNum,@FirstRMB as FirstRMB,StuRMB as LastRMB,@RecDate as RecDate,@RecTime as RecTime,RecTeaName from T_RechargeInfo,T_StuInfo where T_RechargeInfo.StuCardNum =T_StuInfo .StuCardNum and T_StuInfo.StuCardNum =@StuCardNumand RecDate=@RecDate and RecTime=@RecTime??其運(yùn)行結(jié)果例如以下:
????
???? 解釋一下:這個過程大致是這個樣子的:
--1,先取出此卡號相應(yīng)的如今的總金額--2,先向充值表里面寫入一條充值記錄--3,然后更新學(xué)生信息表里面的金額--4,最后返回充值信息表
??????? 首先定義好傳入的參數(shù):卡號。充值教師,充值金額;然后,依照大致的過程。為每一條過程寫一個SQL語句;最后是輸出部分。假設(shè)輸出結(jié)果是單個參數(shù)。能夠用output,也能夠如上所看到的。輸出個表。
?????? 在輸出的時候,能夠用as更改輸出表的列名。
為什么要更改列名呢?眼下看到兩個優(yōu)點(diǎn):
????????? 1,在綁定DataGridView的時候。不用手動載入HeaderText,這樣的是對于返回到U層是datatable的情況。
????????? 2,還有一種優(yōu)點(diǎn)就是,在將存儲過程運(yùn)行完之后,將datatable轉(zhuǎn)換為實(shí)體集合的時候,由于有一個屬性名和? datatable的字段名必須相應(yīng)的要求,所以,能夠說。必需要求select語句中使用as命名字段名,否則實(shí)體集合會出現(xiàn)轉(zhuǎn)換失敗返回空集合的情況。
轉(zhuǎn)載于:https://www.cnblogs.com/cxchanpin/p/6844503.html
總結(jié)
- 上一篇: 3.8 高级检索方式(二)
- 下一篇: 三星笔记本怎么装w7系统教程 三星电脑安