2009-11-13 61 views
-1

我是使用C#編寫SQL存儲過程的菜鳥。徘徊有沒有什麼辦法可以創建一個通用的方法,在同一個腳本中的存儲過程中調用?C#sql存儲過程

+0

什麼是你的Sql服務器(MySQL,Microsoft Sql Server,Oracle等)?你是在談論從SQL語句調用C#方法嗎?如果沒有極端的黑客行爲,這是不可能的 – Earlz 2009-11-13 19:21:38

+0

Sql Server 2005+實際上允許隨時訪問.Net CLR並調用外部代碼非常簡單。 – 2009-11-13 19:22:53

+0

哦..嗯..沒關係我然後哈哈 – Earlz 2009-11-13 19:23:34

回答

0

您可以創建在存儲過程中UDF,其基於發送到存儲過程的參數:

I.E. (在你的SP)

DECLARE @var1 int 
IF @param1 = 1 THEN 
    SELECT @var1 = dbo.fn_MyUDF(@params) 
END IF 
2

這裏是一個頁面入門using Sql Server stored procs for the CLR

這裏是一個Hello World example讓你開始。

這個想法是,你使用更高級別的面嚮對象語言編寫複雜的邏輯,然後只需從Sql Server中存儲的特效進行簡單調用,即可在CLR中執行該邏輯。

0

CLR過程就像任何其他存儲過程一樣,功能也一樣。一旦部署在數據庫中,它們可以被腳本和查詢訪問。假設你在一個類中創建一個C#方法:

class Foo 
{ 
public static void Bar() 
{ 
    // Awesome code goes here 
} 
} 

你可以編譯這個類爲一個程序集DLL,說MyClasses.DLL,那麼aseembly加載到使用CREATE ASSEMBLY MyClasses FROM數據庫,與CREATE PROCEDURE Bar EXTERNAL MyClasses.Foo.Bar申報程序。那麼您的腳本可以簡單地使用EXEC Bar;來調用該過程。

Visual Studio可以簡化整個過程,SQL Server項目類型可以部署程序集並聲明包含的過程/函數/數據類型。

一旦你開始到Digg的,喜歡像你的C#代碼等等等等

要開始SqlProcedureAttributeSqlFunctionAttribute正確使用屬性還有更多的細節,我推薦一些MSDN文章像Using CLR Integration in SQL Server 2005Common Language Runtime (CLR) Integration Programming Concepts和看看Usage Scenarios and Examples for Common Language Runtime (CLR) Integration中的樣品。