-------
As --@@程序開始
begin
Begin Tran --@@激活事務
Exec spDOSomething --@@調用其他sp
if @@Error<>0 --@@判斷是否錯誤
begin
Rollback Tran --@@回滾事務
RaisError ('SQL Server,spBuyBook: 調用spDOSomeThing發生錯誤。', 16, 1) with Log --@@記錄日志
Return -1 --@@返回錯誤號
end
.... --更多其他代碼
Commit Tran --@@提交事務
end
媽 的我怎麼這麼背啊我??什麼時候不死機,偏偏在這時!!丟了不少……:(:(
下面默哀3分鐘……
1……
2……
3……
好了,繼續!回憶剛才寫的內容ing ……
AA、存儲過程的幾個要素: a. 參數 b.變量 c.語句 d.返回值 e.管理存儲過程
BB、更高級的編程要素: a.系統存儲過程 b.系統表 c.異常處理 d.臨時表 e.動態SQL f.擴展存儲過程 g.DBCC命令
AA.a 參數: 知識要點包括:輸入參數,輸出參數,參數默認值
Sample:
Create Proc spTest(
@i int =0 , --輸入參數
@o int output --輸出參數
)
As
Set @o=@i*2 --對輸出參數付值
Use the Sample:
Declare @o int
Exec spTest 33,@o output
Select @o --此時@o應該等於33*2=66。
----------------------------------------------------------------------
以上代碼沒有測試,順手寫寫的。希望不會出錯:)
--懶蟲 # SapphireStudio
精彩世界,盡在3腿軟件網(www.chair3.com)!!
-----------------------------------------------------------------------
AA.b 變量:AA.a中已經有聲明變量的例子了,就是Declare @o int
AA.c 語句:在SQL Server 中,如果僅僅使用標准SQL語句將是不可想象的,通常認為,標准的SQL 語句就那麼幾條,如:
Select, Update, Delete
因此,我們需要引入更多更強大的功能,那
/> end
end
Set @i=@i+1
end
----------------------------------------------------------------------
以上代碼判斷20之內的單數與雙數。
--懶蟲 # SapphireStudio
精彩世界,盡在3腿軟件網(www.chair3.com)!!
-----------------------------------------------------------------------
AA.d 返回值
Sample:
Create Proc spTest2
As
Return 22
Use the Sample
Declare @i int
Exec @i=spTest2
Select @i
AA.e 管理存儲過程: 創建,修改,刪除。
分別為:
Create Proc ... , Alter Proc ... , Drop Proc ...
BB、更高級的編程要素: a.系統存儲過程 b.系統表 c.異常處理 d.臨時表 e.動態SQL f.擴展存儲過程 g.DBCC命令
哈哈,以下課程收費!!(玩笑,實際上打算放到後面去講了。)
3、函數。
函數是SQL 2000的新功能。一般的編程語言都有函數,我就不用解釋函數是什麼東東了。:)
或許不少朋友會問:我用存儲過程不就可以了麼,我為什麼要使用函數?
這裡特別指出的一點:fn可以嵌套在Select語句中使用,而sp不可以。
這裡不打算大批特批一番游標了,當然,在我的程序裡面,基本拋棄了游標(這裡特別說明,是“基本”!因為還是有很多地方費用導游表不可的。),轉而采用了fn。游標太消耗資源了。受不了……我快要感動得要流淚了…
fn其實要比sp要簡單得多。因為它的不確定性,從而也使他受到了不少的限制。
舉個函數的小粒子:
Create Function fnTest ( @i int )
Returns bit
As
begin
Declare @b bit
if (Cast(@i As Float)/2)=(@i/2)
Set @b= 1
else
Set @b= 0
Return @b
end
----------------------------------------------------------------------
以上代碼判斷@i是單數還是雙數。
--懶蟲 # SapphireStudio
精彩世界,盡在3腿軟件網(www.chair3.com)!!
-----------------------------------------------------------------------
Use the Sample:
Create Table #TT( fd1 int)
Declare @i int
Set @i=0
While @i<=20
begin
Insert Into #tt Values(@i)
Set @i=@i+1
end
Select fd1,
'是否雙數'=dbo.fnTest(fd1) --在這裡調用了函數,注意哈:函數之前一定要加上他的owner.
From #tt
Drop Table #tt
----------------------------------------------------------------------
以上代碼虛擬一段數據,然後判斷數據表中是單數還是雙數。