用C#寫儲存過程(VS.NET 2005)
阿新 • • 發佈:2020-10-22
SQL2005中內建CLR, 因此可以用更高階的託管語言編寫SP, Trigger,Function....等
下面是我用C#編寫SP的過程:
環境: Win 2003 + SQL Server 2005 CTP(今年2月版本) +VS.NET 2005 CTP(今年2月版本) +FW 2.0.50110 beta2
首先接上一篇連結的資料庫,新建一個SQL Server Project
接下來會提示要連結的資料庫對話方塊:
如果要連結的資料庫不在列表中,可以Add New,連結完資料庫後將得到如下工程
新增一個StoredProcedure Item,目前支援的Item有:
此時可以在資料庫中新增一個表,如: table1,欄位如下:
給剛才新增的 StoredProcedure Item 中新增如下程式碼,其中包括兩個儲存過程,和一個函式
usingSystem.Data;
usingSystem.Data.Sql;
usingSystem.Data.SqlServer;
usingSystem.Data.SqlTypes;
publicpartial classStoredProcedures
{
[SqlProcedure]
publicstaticvoidHello()
{
SqlContext.GetPipe().Send("hello,uGoer!");
[SqlProcedure]
publicstaticvoidInsertData(SqlStringname)
{
SqlCommandInsertCurrencyCommand=SqlContext.GetCommand();
InsertCurrencyCommand.CommandText="INSERTINTOtable1(Name,addDate)VALUES('"+name.Value+"','"+DateTime.Now.ToString()+"')";
InsertCurrencyCommand.ExecuteNonQuery();
[SqlFunction]
publicstaticSqlStringtestFunction()
{
return"hello,cnBlogs.com";
}
};
下一步就是編譯部署用C#寫的儲存過程與函式,在目前的這個版本中VS.NET可以比較順利的完成,步驟如下:
選擇build-->Deploy 工程名稱
部署完成以後再看看資料庫吧,呵呵,剛才寫的SP, Function都到裡面去了
最後測試一下呼叫C#寫的儲存過程,在SQL Server Project建立後會自動建立Test Scripts資料夾並且包含Test.sql檔案,工具MSDN的說法可以在裡面直接寫T-SQL進行測試,好,下面我們就看看,在Test.sql中新增如下資料:
EXECHello
EXECInsertData ' ugoer '
EXECInsertData ' cnBlogs '
-- 看看我們新增的資料
SELECT * FROMtable1
然後在Debug下 開始 Start 嘿嘿,等等吧,VS 2005太吃記憶體了,建議512M的機子跑。
看看我們得到了什麼:
哈哈,一切正常看來以後寫 儲存過程方便了,運用託管語言封裝T-SQL,可以利用託管語言對資料的處理能力,比如資料庫過濾,判斷,迴圈,等等等
另:如果Debug出現這樣的提示:use sp_configure 'clr enabled',請先開啟 clr enabled,方法如下:
GO
RECONFIGURE
GO
EXECsp_configure ' clrenabled ', 1
GO
RECONFIGURE
GO
要關閉clr enabled,可以使用
EXECsp_configure ' clrenabled ', 0GO
RECONFIGURE
GO
轉載於:https://my.oschina.net/bv10000/blog/143057