用C#寫存儲過程(VS.NET 2005)

SQL2005中內置CLR, 所以能夠用更高級的託管語言編寫SP, Trigger,Function....等 
下面是我用C#編寫SP的過程: html

環境: Win 2003 + SQL Server 2005 CTP(今年2月版本) +VS.NET 2005 CTP(今年2月版本)  +FW 2.0.50110      beta2 

首先接上一篇連接的數據庫,新建一個SQL Server Project 
 

接下來會提示要連接的數據庫對話框: 
 
若是要連接的數據庫不在列表中,能夠Add New,連接完數據庫後將獲得以下工程 sql

 
添加一個StoredProcedure Item,目前支持的Item有: 
數據庫

此時能夠在數據庫中添加一個表,如: table1,字段以下: 
 

給剛纔添加的 StoredProcedure Item 中添加以下代碼,其中包括兩個存儲過程,和一個函數 函數

using System; 
using System.Data; 
using System.Data.Sql; 
using System.Data.SqlServer; 
using System.Data.SqlTypes; 
 
 
public partial  class StoredProcedures 

    [SqlProcedure] 
    public static void Hello() 
    
        SqlContext.GetPipe().Send("hello ,uGoer!"); 
    }
 
 
    [SqlProcedure] 
    public static void InsertData(SqlString name) 
    
        SqlCommand InsertCurrencyCommand = SqlContext.GetCommand(); 
        InsertCurrencyCommand.CommandText = "INSERT INTO table1 (Name, addDate) VALUES ('"+name.Value+"', '" + DateTime.Now.ToString() + "')"; 
        InsertCurrencyCommand.ExecuteNonQuery(); 
    }
 
 
    [SqlFunction] 
    public static SqlString testFunction() 
    
        return "hello , cnBlogs.com"; 
    }
 
}
;

下一步就是編譯部署用C#寫的存儲過程與函數,在目前的這個版本中VS.NET能夠比較順利的完成,步驟以下: 
選擇build-->Deploy 工程名稱 
部署完成之後再看看數據庫吧,呵呵,剛纔寫的SP, Function都到裏面去了 
 

最後測試一下調用C#寫的存儲過程,在SQL Server Project創建後會自動創建Test Scripts文件夾而且包含Test.sql文件,工具MSDN的說法能夠在裏面直接寫T-SQL進行測試,好,下面咱們就看看,在Test.sql中添加以下數據: 
EXEC Hello 
EXEC InsertData  ' ugoer ' 
EXEC InsertData  ' cnBlogs ' 
 
-- 看看咱們添加的數據  
SELECT  *  FROM table1

而後在Debug下 開始 Start 嘿嘿,等等吧,VS 2005太吃內存了,建議512M的機子跑。 
看看咱們獲得了什麼: 
 
哈哈,一切正常看來之後寫 存儲過程方便了,運用託管語言封裝T-SQL,能夠利用託管語言對數據的處理能力,好比數據庫過濾,判斷,循環,等等等 


另:若是Debug出現這樣的提示:use sp_configure 'clr enabled',請先打開 clr enabled,方法以下:  工具

EXEC sp_configure  ' show advanced options '1 
GO 
RECONFIGURE 
GO 
 
    EXEC sp_configure  ' clr enabled '1 
GO 
RECONFIGURE 
GO 
 

要關閉clr enabled,能夠使用 測試

EXEC sp_configure  ' clr enabled '0 
GO 
RECONFIGURE 
GO 
相關文章
相關標籤/搜索