成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CLR函數實現字符串排序七步通

開發 后端
文章主要介紹CLR函數實現字符串排序的七個步驟,本文有詳細的代碼和圖片講解,希望看完可以給大家帶來幫助,總結一下經驗。

下面我們來給大家編寫一個簡短的CLR函數,來實現SQL Server 2005的功能。接下來讓我們來看看CLR函數具體是如何實現這一功能的,希望可以給大家帶來幫助。

步驟1:啟用CLR集成

首先需要在SQL Server外圍應用配置器中進行設置,確保SQL Server已經啟用了CLR。如圖1所示:

SQL Server 2005外圍應用配置器

選擇“功能的外圍應用配置器”,顯示如圖2所示界面:

功能的外圍應用配置器

確?!皢⒂肅LR集成”這一項打勾,然后點“確定”按鈕。

步驟2:編寫CLR代碼

首先,我們需要做的是編寫CLR代碼。采用VB.NET或者C#來寫都可以,在這個例子中我們將使用VB.NET 。

下面的范例代碼中,創建了一個名為CLRFunctions的類,該類中包含了一個名為SortString的函數。SortString函數對輸入的一個字符串變量進行排序,并返回一個排序后的字符串。

第一步:使用內置的VB函數,把 “,”作為分隔符分割輸入的字符串,得到一個字符串數組;

第二步:采用Array.Sort,對數組中的數據進行排序列。這一部如果采用T-SQL來寫的話,更為簡單。

將代碼保存到SQLServerCLRSortString.vb文件中。

  1. Public Class CLRFunctions   
  2. Public Shared Function SortString(ByVal Name As String) As String  
  3. Dim i As Integer  
  4. Dim returnValue As String  
  5. Dim stringArray() As String  
  6. ' 分割字符串,得到數組  
  7. stringArray = Split(Name, ",")  
  8. ' 對數組進行排序  
  9. Array.Sort(stringArray)  
  10. '初始化返回值字符串  
  11. returnValue = "" 
  12. For i = LBound(stringArray) To UBound(stringArray)  
  13. returnValuereturnValue = returnValue & stringArray(i) & ","  
  14. Next i  
  15. Return returnValue  
  16. End Function  
  17. End Class 

步驟3:編譯CLR代碼

為了使用此代碼,需要先對代碼進行編譯。在命令行狀態下,可以使用vbc.exe應用程序來編譯代碼。具體命令如下所示:

  1. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc /target:library C:\SQLServerCLRSortString.vb 

 vbc.exe應用程序,在.NET 2.0框架目錄中可以找到,不同的服務器或桌面因安裝路徑不同可能會有差異。編譯成功后,將得到C:\SQLServerCLRSortString.dll這個DLL文件。把DLL拷貝到我們的SQL Server機器上

步驟4:在SQL Server中注冊DLL

代碼編譯通過后,您需要與SQL Server中注冊DLL。要實現到這一目的,可以在要使用該函數的數據庫中能運行這些命令。注冊的目的,就是將外部創建的DLL與SQL Server內部對象進行綁定,這樣外部DLL中的函數就可以和SQL Server中的正常函數一樣進行調用了。

在下面的函數中,我們可以看到引用CLRFunctions.CLRFunctions.SortString由三個部分組成:

  1. *CLRFunctions – 裝配引用     
  2. *CLRFunctions – VB.net 代碼中所引用的類名    
  3. *SortString – VB.net代碼中所引用的函數    
  4. CREATE ASSEMBLY CLRFunctions FROM 'C:\SQLServerCLRSortString.dll'    
  5. GO    
  6. CREATE FUNCTION dbo.SortString    
  7. (    
  8. @name AS NVARCHAR(255)    
  9. )    
  10. RETURNS NVARCHAR(255)    
  11. AS EXTERNAL NAME CLRFunctions.CLRFunctions.SortString    
  12. GO   

步驟5:創建測試用的數據表和數據

可以創建一個示例表和一些測試數據,來檢驗一下,具體代碼如下所示:

  1. CREATE TABLE testSort (data VARCHAR(255))   
  2. GO  
  3. INSERT INTO testSort VALUES('apple,pear,orange,banana,grape,kiwi')  
  4. INSERT INTO testSort VALUES('pineapple,grape,banana,apple')  
  5. INSERT INTO testSort VALUES('apricot,pear,strawberry,banana')  
  6. INSERT INTO testSort VALUES('cherry,watermelon,orange,melon,grape')  

 步驟6:測試

如果要測試CLR函數,在步驟4執行后示例表和數據創建完之后,可以運行下面的SELECT語句,分別列出排序前和排序后的數據,兩者便于對比。

  1. SELECT data, dbo.sortString(data) as sorted FROM testSort 

步驟7:刪除CLR函數

如果希望徹底刪除CLR函數,您需要將之前創建的VB文件以及編譯過程中產生的DLL都刪除。

運行下面的T-SQL代碼可以刪除之前創建的對象。

  1. DROP FUNCTION dbo.SortString   
  2. GO  
  3. DROP ASSEMBLY CLRFunctions  
  4. GO  
  5. DROP TABLE testSort  
  6. GO 
快試試吧,很簡單的!

【編輯推薦】

  1. .NET CLR性能評測
  2. 分析CLR Via的方法參數相關
  3. 淺析C# CLR的語言特性
  4. 解析C# CLR的15個細節
  5. 淺析CLR Via C#構造函數
責任編輯:田樹 來源: 博客
相關推薦

2009-11-06 13:59:09

WCF Service

2010-08-10 13:15:36

Flex配置

2009-10-20 09:42:16

VB.NET編程

2019-03-10 20:37:14

Python編程語言

2023-04-28 14:38:47

2010-05-28 10:10:49

2010-05-28 18:30:26

SVN1.4.5Ser

2009-11-06 14:33:27

WCF代理節點

2010-07-02 15:48:48

BlackBerry開

2017-04-21 14:21:53

深度學習神經網絡

2009-07-30 18:08:14

IT與業務融合

2011-07-18 16:11:32

域控制器

2011-09-05 17:36:24

2010-06-28 15:18:51

SQL Server

2019-05-10 08:27:12

MySQL數據庫字符集

2018-02-24 18:12:30

2017-03-03 10:09:30

2013-10-29 14:57:17

AngularJS項目

2009-10-28 21:45:05

搭建網絡

2013-11-06 13:55:27

AngularJS服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清不卡 | 综合天天久久 | 日韩免费视频一区二区 | 四虎免费视频 | 日韩精品二区 | 一区二区视频在线 | 特级丰满少妇一级aaaa爱毛片 | 一级做a| 黄色毛片在线观看 | 亚洲视频中文 | 国产福利91精品一区二区三区 | 久久国产精品久久久久久 | 亚洲一二三区av | 高清欧美性猛交xxxx黑人猛交 | 久久精品国产一区二区 | 少妇一区二区三区 | 国产97碰免费视频 | 日韩精品一区二区三区中文字幕 | 九色视频网 | 免费在线观看av网址 | 亚洲第一在线 | 99re国产视频 | 国产午夜精品一区二区三区嫩草 | 九九视频在线观看 | 一级毛片黄片 | 欧美精品在线一区二区三区 | 亚洲一区二区三区欧美 | 久久精品久久久 | av一二三区 | 国产精品久久久久久妇女 | 婷婷色国产偷v国产偷v小说 | 亚洲一区二区三区在线视频 | 91秦先生艺校小琴 | 亚洲天堂精品久久 | 亚洲天堂网站 | 久久在线视频 | 欧美精品在欧美一区二区 | 久久久久久久一区二区三区 | 欧美午夜精品久久久久免费视 | 91国内精精品久久久久久婷婷 | 久久成人精品视频 |