日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析基于SQL2005的CLR存儲過程

CLR存儲過程不是很容易理解的,筆者用簡單的語言對CLR存儲過程進(jìn)行了詳細(xì)的描述,不僅僅從理論,也從實(shí)現(xiàn)方法上對其進(jìn)行了講述,希望對你有所幫助。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、扎蘭屯網(wǎng)站維護(hù)、網(wǎng)站推廣。

在 SQL Server 2005 中,可以在SQL Server實(shí)例中使用以下方法創(chuàng)建數(shù)據(jù)庫對象:基于 Microsoft .NET Framework 公共語言運(yùn)行時(shí) (CLR) 創(chuàng)建中的程序集使用編程方法創(chuàng)建。能夠利用由CLR提供的眾多編程模型的數(shù)據(jù)庫對象包括觸發(fā)器、存儲過程、函數(shù)、聚合函數(shù)和類型。

雖然Transact-SQL是專門為數(shù)據(jù)庫中的直接數(shù)據(jù)訪問和操作而設(shè)計(jì),但是它沒有提供編程構(gòu)造來使數(shù)據(jù)操作和計(jì)算更加容易。例如,Transact-SQL 不支持?jǐn)?shù)組、集合、for-each 循環(huán)、位轉(zhuǎn)移或類。

CLR存儲過程提供面向?qū)ο蟮墓δ?,例如封裝、繼承和多態(tài)性?,F(xiàn)在,相關(guān)代碼可以很容易在類和命名空間中進(jìn)行組織。在使用大量服務(wù)器代碼時(shí),這樣可以更容易地組織和維護(hù)代碼,通過使用托管代碼而實(shí)現(xiàn)某些數(shù)據(jù)庫功能。

對于計(jì)算和復(fù)雜的執(zhí)行邏輯,基于CLR的托管代碼比Transact-SQL 更適合,托管代碼的一個優(yōu)點(diǎn)是類型安全性,它全面支持許多復(fù)雜的任務(wù),包括字符串處理和正則表達(dá)式。

通過 .NET Framework 庫中提供的功能,可以訪問數(shù)千個預(yù)生成的類和例程??梢院苋菀讖娜魏未鎯^程、觸發(fā)器或用戶定義函數(shù)進(jìn)行訪問?;悗彀ǖ念愄峁┯糜谧址僮?、高級數(shù)學(xué)運(yùn)算、文件訪問、加密等的功能。

對于幾乎或根本不需要過程邏輯的數(shù)據(jù)訪問,還是使用 Transact-SQL。對于具有復(fù)雜邏輯的CPU密集型函數(shù)和過程最好還是使用托管代碼。

我們看如何在Visual Studio 2005中創(chuàng)建基于SQL Server 2005的CLR存儲過程:

我們打開Visual Studio 2005,在對應(yīng)數(shù)據(jù)庫欄目下面有個SQL Server項(xiàng)目,新建立一個項(xiàng)目,命名為StoredStu,確定過后會顯示一個數(shù)據(jù)庫連接對話框,數(shù)據(jù)庫連接好后,我們在數(shù)據(jù)庫中有如下兩個表,如下:

StuInfo(學(xué)生信息表)

Nation(民族表)

新建立一個文件,選擇“存儲過程”的選項(xiàng),命名為StoredStu,在文件中寫入以下的代碼:

 
 
 
 
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.Data.SqlTypes;
  5. using Microsoft.SqlServer.Server;
  6. public partial class StoredProcedures
  7. {
  8.     [Microsoft.SqlServer.Server.SqlProcedure]
  9.     public static void StoredStu()
  10.     {
  11.         // 在此處放置代碼
  12.         SqlPipe sp = SqlContext.Pipe;
  13.         string sql = "Select * from StuInfo";
  14.         using (SqlConnection conn = new SqlConnection
  15. ("context connection=true"))
  16.         {
  17.             conn.Open();
  18.             SqlCommand cmd = new SqlCommand();
  19.             cmd.CommandType = CommandType.Text;
  20.             cmd.Connection = conn;
  21.             cmd.CommandText = sql;
  22.             SqlDataReader rdr = cmd.ExecuteReader();
  23.             sp.Send(rdr);
  24.         }
  25.     }
  26.     [SqlProcedure]
  27.     public static void GetStuInfo(string strNationCode)
  28.     {
  29.         string sql = "select Stu.StudentName, Stu.StudentNo,
  30. Stu.StudentUniversity,Na.NationName from StuInfo Stu inner join
  31. Nation Na on Stu.NationCode = Na.NationCode  where
  32. Stu.NationCode = '" + @strNationCode + "'";
  33.         using (SqlConnection conn = new SqlConnection
  34. ("context connection=true"))
  35.         {
  36.             conn.Open();
  37.             SqlPipe sp = SqlContext.Pipe;
  38.             SqlCommand cmd = new SqlCommand();
  39.             cmd.CommandType = CommandType.Text;
  40.             cmd.Connection = conn;
  41.             cmd.CommandText = sql;
  42.             SqlParameter paramstrNationCode =
  43.  new SqlParameter("@strNationCode", SqlDbType.VarChar, 11);
  44.             paramstrNationCode.Direction = ParameterDirection.Input;
  45.             paramstrNationCode.Value = strNationCode;
  46.             cmd.Parameters.Add(paramstrNationCode);
  47.             SqlDataReader rdr = cmd.ExecuteReader();
  48.             sp.Send(rdr);
  49.         }
  50.     }
  51. };

現(xiàn)在我們先對其進(jìn)行編譯,在“生成”菜單中選擇“生成解決方案”,當(dāng)編譯完工程后,就需要為其進(jìn)行部署了。同樣選擇“生成”菜單中的“部署解決方案”, 這樣就會自動將寫好的存儲過程部署到 SQL Server 2005 中去。

為了確保SQL可以執(zhí)行托管代碼,我們還需要在SQL Server 2005中,執(zhí)行下面的語句:

 
 
 
 
  1. EXEC sp_configure "clr enabled", 1; 
  2. RECONFIGURE WITH OVERRIDE; 
  3. GO 

執(zhí)行顯示的結(jié)果如下:

“配置選項(xiàng)'clr enabled' 已從0 更改為1。請運(yùn)行RECONFIGURE 語句進(jìn)行安裝?!?/p>

這樣就可以創(chuàng)建好CLR存儲過程了。


網(wǎng)頁題目:淺析基于SQL2005的CLR存儲過程
標(biāo)題路徑:http://www.dlmjj.cn/article/cdecheg.html