自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

經(jīng)典案例之創(chuàng)建CLR存儲(chǔ)過(guò)程

開(kāi)發(fā) 后端
文章主要介紹了我們?nèi)绾卧赩isual Studio 2005中創(chuàng)建基于SQL Server 2005的CLR存儲(chǔ)過(guò)程,一個(gè)例子讓你很快了解其中的編程思想。

學(xué)習(xí)了很長(zhǎng)時(shí)間,在這里和大家分享一下關(guān)于CLR存儲(chǔ)過(guò)程方面的問(wèn)題,有一個(gè)小的實(shí)例大家來(lái)看看。CLR存儲(chǔ)過(guò)程提供面向?qū)ο蟮墓δ埽绶庋b、繼承和多態(tài)性。現(xiàn)在,相關(guān)代碼可以很容易在類和命名空間中進(jìn)行組織。在使用大量服務(wù)器代碼時(shí),這樣可以更容易地組織和維護(hù)代碼,通過(guò)使用托管代碼而實(shí)現(xiàn)某些數(shù)據(jù)庫(kù)功能。

對(duì)于計(jì)算和復(fù)雜的執(zhí)行邏輯,基于CLR的托管代碼比Transact-SQL 更適合,托管代碼的一個(gè)優(yōu)點(diǎn)是類型安全性,它全面支持許多復(fù)雜的任務(wù),包括字符串處理和正則表達(dá)式。通過(guò) .NET Framework 庫(kù)中提供的功能,可以訪問(wèn)數(shù)千個(gè)預(yù)生成的類和例程??梢院苋菀讖娜魏未鎯?chǔ)過(guò)程、觸發(fā)器或用戶定義函數(shù)進(jìn)行訪問(wèn)?;悗?kù)包括的類提供用于字符串操作、高級(jí)數(shù)學(xué)運(yùn)算、文件訪問(wèn)、加密等的功能。對(duì)于幾乎或根本不需要過(guò)程邏輯的數(shù)據(jù)訪問(wèn),還是使用 Transact-SQL。對(duì)于具有復(fù)雜邏輯的CPU密集型函數(shù)和過(guò)程最好還是使用托管代碼。

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

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

StuID  

學(xué)生 ID  

StudentName  

學(xué)生姓名  

StudentNO  

學(xué)生學(xué)號(hào)  

StudentUniversity  

所在學(xué)院  

NationCode  

民族代碼  

 
Nation(民族表)
 

NationCode  

民族代碼  

NationName  

民族名稱

 

新建立一個(gè)文件,選擇“存儲(chǔ)過(guò)程”的選項(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("context connection=true"))  
  15. {  
  16. conn.Open();  
  17. SqlCommand cmd = new SqlCommand();  
  18. cmd.CommandType = CommandType.Text;  
  19. cmd.Connection = conn;  
  20. cmd.CommandText = sql;  
  21. SqlDataReader rdr = cmd.ExecuteReader();  
  22. sp.Send(rdr);  
  23. }  
  24. }  
  25. [SqlProcedure]  
  26. public static void GetStuInfo(string strNationCode)  
  27. {  
  28. string sql = "select Stu.StudentName, Stu.StudentNo, Stu.StudentUniversity,Na.NationName from StuInfo Stu inner join Nation Na on Stu.NationCode = Na.NationCode  where Stu.NationCode = '" + @strNationCode + "'";  
  29. using (SqlConnection conn = new SqlConnection("context connection=true"))  
  30. {  
  31. conn.Open();  
  32. SqlPipe sp = SqlContext.Pipe;  
  33. SqlCommand cmd = new SqlCommand();  
  34. cmd.CommandType = CommandType.Text;  
  35. cmd.Connection = conn;  
  36. cmd.CommandText = sql;  
  37. SqlParameter paramstrNationCode = new SqlParameter("@strNationCode", SqlDbType.VarChar, 11);  
  38. paramstrNationCode.Direction = ParameterDirection.Input;  
  39. paramstrNationCode.Value = strNationCode;  
  40. cmd.Parameters.Add(paramstrNationCode);  
  41. SqlDataReader rdr = cmd.ExecuteReader();  
  42. sp.Send(rdr);  
  43. }  
  44. }  
  45. }; 

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

為了確保SQL可以執(zhí)行托管代碼,我們還需要在SQL Server 2005中,執(zhí)行下面的語(yǔ)句:
執(zhí)行顯示的結(jié)果如下:

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

“配置選項(xiàng)'clr enabled' 已從0 更改為1。請(qǐng)運(yùn)行RECONFIGURE 語(yǔ)句進(jìn)行安裝。”

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

 

【編輯推薦】

  1. 詳解CLR中Jit編譯發(fā)生的過(guò)程
  2. 深入了解.NET編譯器中CLR加載過(guò)程
  3. 簡(jiǎn)單介紹CLR泛型及其優(yōu)勢(shì)
  4. 淺談CLR 4.0安全模型的運(yùn)作機(jī)制
  5. CLR線程池的作用與原理淺析
責(zé)任編輯:田樹 來(lái)源: 博客
相關(guān)推薦

2009-09-18 10:40:05

CLR存儲(chǔ)過(guò)程

2009-10-22 15:09:40

CLR存儲(chǔ)過(guò)程

2009-09-18 14:09:57

SQL CLR存儲(chǔ)過(guò)程

2009-10-22 13:02:47

SQL CLR存儲(chǔ)過(guò)程

2009-10-22 18:06:31

CLR存儲(chǔ)過(guò)程

2009-09-18 10:55:17

CLR存儲(chǔ)過(guò)程

2009-09-17 19:19:17

CLR存儲(chǔ)過(guò)程

2009-09-17 18:27:40

CLR是什么

2010-07-05 10:06:51

SQL Server擴(kuò)

2010-04-16 10:11:20

Oracle存儲(chǔ)過(guò)程

2010-10-09 17:08:15

MySQL存儲(chǔ)過(guò)程

2018-11-05 15:14:42

MySQL編程語(yǔ)言技術(shù)

2010-11-29 15:25:39

Sybase存儲(chǔ)過(guò)程

2010-05-19 14:03:41

MySQL 存儲(chǔ)過(guò)程

2010-10-12 11:07:34

MySQL存儲(chǔ)過(guò)程

2010-10-29 16:17:55

Oracle存儲(chǔ)過(guò)程

2010-04-20 09:43:34

OracleDB2

2010-06-07 15:36:36

MySQL存儲(chǔ)過(guò)程

2011-07-19 15:18:46

存儲(chǔ)過(guò)程sql語(yǔ)句

2010-04-15 17:45:26

Oracle存儲(chǔ)過(guò)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)