MS SQL Server目前正日益成為WindowNT操作系統上面最為重要的一種數據庫管理系統
MS SQL Server2000的推出
0系列操作系統一統天下的局面
頭羊甲骨文公司的看家數據庫系統Oracle在內
在微軟自己的操作系統上面
促使MS SQL Server在自己僅有的
wsNT系列操作系統的各種潛能!作為MS SQL Server數據庫系統中很重要的一個概念就是存儲過程
理的使用存儲過程
軟件系統的可維護性
眾多的用戶手中
以最大限度的利用MS SQL Server的各種資源
存儲過程和使用存儲過程的技巧經驗!
下面我們討論的前提都是您有過一定的MS SQL Server存儲過程的編寫經驗
特別注明
1
一般的存儲過程都是直接返回一段記錄集給調用者
可以指定存儲過程的OUTPUT參數
Create procedure GetName
@uid nvarchar(1)
@usernam nvarchar(10)='' output
AS
set @username='hongchao'
GO
在上面的存儲過程當中我們傳遞進的參數是@uid
這樣
是
用這個存儲過程的時候給這個參數一個初始的值
2
這一點在MS SQL Server7.0和MS SQL Server2000種有些地方是不一樣的
知道是不是微軟的遺漏
select * from users where level=1
在MS SQL Server7當中的存儲過程當中運行沒有絲毫的問題
00當中則會出現運行的錯誤
(奇怪的是SQL7當中也同樣是關鍵字
select * from users where [level]=1
從上面的例子中我們可以看到
圍起來
3
我們在編寫自己的存儲過程的時候
要的注意的是
用者來說
決的方法是使用全局臨時Table
4
如果我們的商業邏輯比較復雜
務必記得在使用完之後
而在存儲過程當中想要依次遍歷一個記錄集的唯一方法就是使用系統游標
閉和銷毀游標對象釋放他用到的資源
尤其是對於大並發量的情況下
使用臨時Table和游標各有利弊
5
有些特殊的情況下
程sp_OACreate以及其他的相關系統存儲過程
過程當中調用ActiveX DLL的各種方法和屬性
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255)
-- 建立一個對象(SQLDMO.SQLServer).
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer'
OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
OUT
SELECT hr=convert(varbinary(4)
c
RETURN
END
-- 設置對象的屬性.
EXEC @hr = sp_OASetProperty @object
izmo'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
OUT
SELECT hr=convert(varbinary(4)
c
RETURN
END
-- 通過OUTPUT參數獲取對象的屬性值.
EXEC @hr = sp_OAGetProperty @object
roperty OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
OUT
SELECT hr=convert(varbinary(4)
c
RETURN
END
PRINT @property
-- 調用對象的方法
EXEC @hr = sp_OAMethod @object
y_server'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
OUT
SELECT hr=convert(varb
From:http://tw.wingwit.com/Article/program/SQLServer/201311/11235.html