什麼是擴充套件儲存過程?
擴充套件儲存過程使您得以使用象 c 這樣的程式語言建立自己的外部例程。對使用者來說,擴充套件儲存過程與普通儲存過程一樣,執行方法也相同。可將引數傳遞給擴充套件儲存過程,擴充套件儲存過程可返回結果,也可返回狀態。擴充套件儲存過程可用於擴充套件 microsoft® sql server™ 2000 的功能。
擴充套件儲存過程是 sql server 可以動態裝載並執行的動態鏈結庫 (dll)。擴充套件儲存過程直接在 sql server 的位址空間執行,並使用 sql server 開放式資料服務 (ods) api 程式設計。
編寫好擴充套件儲存過程後,固定伺服器角色 sysadmin 的成員即可在 sql server 中註冊該擴充套件儲存過程,然後授予其他使用者執行該過程的許可權。擴充套件儲存過程只能新增到 master 資料庫中。
使用 c# 編寫擴充套件儲存過程
下面就以乙個簡單的例子來演示如何用 c# 編寫擴充套件儲存過程。
首先,我們建立乙個簡單的c#類庫檔案:
//c# file: csserver.cs
using system;
using system.runtime.interopservices;
using system.reflection;
using system.runtime.compilerservices;
[assembly: assemblytitle("csserver")]
[assembly: assemblydescription("test sql .net interop")]
[assembly: assemblyversion("1.0.0.1")]
[assembly: assemblydelaysign(false)]
[assembly: assemblykeyfile("mykey.snk")]
namespace sqlinterop
[classinte***ce(classinte***cetype.autodual)]
public class csharphelper : itest
} }
然後建立用 sn -k 為該類庫建立乙個強名金鑰檔案,並編譯之。
sn -k mykey.snk
csc /t:library csserver.cs
註冊該類庫:
rega** /tlb:csserver.tlb csserver.dll /codebase
這樣乙個擴充套件儲存過程就編寫註冊完了,下面我們在sql server中測試一下效果。
t-sql stored proc.
declare @object int
declare @hr int
declare @property varchar(255)
declare @return varchar(255)
declare @src varchar(255), @desc varchar(255)
-- 建立物件例項。
exec @hr = sp_oacreate 'sqlinterop.csharphelper', @object out
if @hr <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@hr), source=@src, description=@desc
return
end
-- 呼叫物件方法。
exec @hr = sp_oamethod @object, 'sayhello', @return out
if @hr <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@hr), source=@src, description=@desc
return
end
print @return
-- 銷毀物件例項。
exec @hr = sp_oadestroy @object
if @hr <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@hr), source=@src, description=@desc
return
end
使用C 編寫擴充套件儲存過程
什麼是擴充套件儲存過程?擴充套件儲存過程使您得以使用象 c 這樣的程式語言建立自己的外部例程。對使用者來說,擴充套件儲存過程與普通儲存過程一樣,執行方法也相同。可將引數傳遞給擴充套件儲存過程,擴充套件儲存過程可返回結果,也可返回狀態。擴充套件儲存過程可用於擴充套件 microsoft sql ser...
mysql過程編寫 mysql儲存過程編寫(一)
首先需要知道mysql儲存過程的作用 1 儲存過程能實現較快的執行速度 2 儲存過程能過減少網路流量 3 儲存過程可被作為一種安全機制來充分利用 儲存過程的格式 create procedure 儲存過程名 過程引數 特性引數 begin endeg delimiter create procedu...
MySQL儲存過程編寫
我想把乙個資料匯入另外乙個資料表,所以我用mysql在上面實現儲存過程.發現和sql server還是有區別的.具體寫法如下 drop procedure if exists test proc delimiter create procedure test proc begin 宣告乙個標誌don...