程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 運用C#設計擴展存儲過程

運用C#設計擴展存儲過程

編輯:C#基礎知識

使用 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 {

public interface ITest{

string SayHello();

}

[ClassInterface(ClassInterfaceType.AutoDual)]

public class CsharpHelper : ITest {

public string SayHello() {

return "Hello from CSharp";

} } }

然後創建用 sn -k 為該類庫創建一個強名密鑰文件,並編譯之。

sn -k MyKey.snk

csc /t:library Csserver.cs

注冊該類庫:

regasm /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 這樣的編程語言創建自己的外部例程。對用戶來說,擴展存儲過程與普通存儲過程一樣,執行方法也相同。可將參數傳遞給擴展存儲過程,擴展存儲過程可返回結果,也可返回狀態。擴展存儲過程可用於擴展 Microsoft&reg; SQL Server&#8482; 2000 的功能。

擴展存儲過程是 SQL Server 可以動態裝載並執行的動態鏈接庫 (DLL)。擴展存儲過程直接在 SQL Server 的地址空間運行,並使用 SQL Server 開放式數據服務 (ODS) API 編程。

編寫好擴展存儲過程後,固定服務器角色 sysadmin 的成員即可在 SQL Server 中注冊該擴展存儲過程,然後授予其他用戶執行該過程的權限。擴展存儲過程只能添加到 master 數據庫中。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved