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

SQL SERVER 2005 CLR集成之簡單SQL函數(shù)講解

開發(fā) 后端
文章主要介紹了SQL SERVER 2005 CLR集成的一個簡單的SQL函數(shù)例子講解,代碼分為7個步驟,每個步驟都有詳細的簡介和代碼,希望可以給你們帶來幫助。

今天主要給大家介紹一下關于SQL SERVER 2005 CLR集成的一些接搜,本文主要針對SQL SERVER 2005 CLR集成簡單SQL函數(shù)的一個步驟和代碼的演示。

第一, 新建類庫,引用命名空間,using Microsoft.SqlServer.Server;

第二, 編寫一個公共類,含有一個公共的靜態(tài)函數(shù),并且具有特性:[Microsoft.SqlServer.Server.SqlFunction(DataAccess=DataAccessKind.None)] ,其中的DataAccess=DataAccessKind.None ,意味該函數(shù)不訪問用戶數(shù)據(jù),DataAccessKind.Read 枚舉值表示需要訪問。

第三,該方法具有返回值, string 類型。

代碼如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using Microsoft.SqlServer.Server;  
  5. using System.Data;  
  6. using System.Data.SqlTypes;  
  7. namespace SQLFunctionTEST  
  8. {  
  9. public class SQLFunction  
  10. {  
  11. [Microsoft.SqlServer.Server.SqlFunction(DataAccess=DataAccessKind.None)]  
  12. public static String StringToArray()  
  13. {  
  14. return "hello,world";  
  15. }  
  16. }  
  17. }  

第四,編譯此類庫。

第五,登陸sql,編寫以下代碼:

  1. CREATE ASSEMBLY SQLFunctionTEST  
  2. FROM 'd:\SQLfunctionTEST.dll'  
  3. WITH permission_set = Safe

第六,這段代碼的意思就是從本地一個dll中創(chuàng)建一個程序集,并且設置權限,默認有三種選擇:SAFE | EXTERNAL_ACCESS | UNSAFE Safe模式就是最具限制性的權限集。由具有 SAFE 權限的程序集所執(zhí)行的代碼將無法訪問外部系統(tǒng)資源,例如文件、網(wǎng)絡、環(huán)境變量或注冊表。EXTERNAL_ACCESS 使程序集可以訪問某些外部系統(tǒng)資源,例如文件、網(wǎng)絡、環(huán)境變量以及注冊表。UNSAFE 可使程序集不受限制地訪問資源,無論是 SQL Server 實例內(nèi)部還是外部的資源都可以訪問。從 UNSAFE 程序集內(nèi)運行的代碼可調(diào)用未托管代碼。好了,這樣就創(chuàng)建了一個叫SQLFunctionTEST 的程序集,那么我開始來從這個程序集創(chuàng)建sql function .

第七:在第一次使用SQL SERVER 2005 CLR集成功能的時候,需要開啟一個clr選項,執(zhí)行以下語句:

  1. EXEC sp_configure 'clr enabled', '1';  
  2. GO  
  3. RECONFIGURE;  
  4. GO 

然后,來創(chuàng)建函數(shù):

  1. CREATE FUNCTION TESTFunction() RETURNS nvarchar(200)  
  2. AS EXTERNAL NAME SQLFunctionTEST.[SQLFunctionTEST.SQLFunction]. StringToArray;  

這段話是創(chuàng)建一個 Scarlar Valued Function,(譯做標量函數(shù)?)返回一個nvarchar。但是大家看 SQLFunctionTEST.[SQLFunctionTEST.SQLFunction]. StringToArray;

可能有點犯暈,這是哪跟哪?。繘]關系,我來講講,第一個SQLFunctionTEST是指的你從哪個程序集創(chuàng)建的,就是你create到數(shù)據(jù)庫的那個程序集的名字,中括號里面的SQLFunctionTEST 就是程序集里面的命名空間,然后接著是類名,中括號右邊就是那個靜態(tài)方法了。然后,我們就可以用這個sql Function了。

  1. declare @x nvarchar (100)  
  2. select @x = dbo.Testfunction()  
  3. select @x as functionReturnValue 

再附上一個使用sql內(nèi)部連接的函數(shù)示例

  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 UserDefinedFunctions  
  7. {  
  8. [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]  
  9. public static SqlMoney DeterminarValor(string descripcion, int cantidad)  
  10. {  
  11. SqlMoney resultado = 0;  
  12. using (SqlConnection cn = new SqlConnection("context connection=true"))  
  13. {  
  14. cn.Open();  
  15. SqlCommand cmd = new SqlCommand("dbo.TraerItemsPorDescripcion", cn);  
  16. cmd.CommandType = CommandType.StoredProcedure;  
  17. cmd.Parameters.Add(new SqlParameter("@descripcion", " "));  
  18. SqlDataReader rdr = cmd.ExecuteReader();  
  19. while (rdr.Read())  
  20. {  
  21. resultado = rdr.GetSqlMoney(rdr.GetOrdinal("Precio")) * cantidad;  
  22. }  
  23. rdr.Close();  
  24. }  
  25. return resultado;  
  26. }  
  27. }; 

對比一下,如果是創(chuàng)建標量函數(shù),那么代碼中的靜態(tài)函數(shù)的返回值就是 sql 函數(shù)中的返回值,還要提到的一點就是在clr 創(chuàng)建程序集的sql連接,需要使用 “context connection=true”的連接字符串。這個連接字符串我馬上就要介紹這個。

【編輯推薦】

  1. 實作CLR存儲過程十四步
  2. 深入挖掘CLR內(nèi)存管理機制原理
  3. 使用CLR存儲過程來傳回訊息實戰(zhàn)案例
  4. 概括Visual Studio CLR調(diào)試器兩種方法
  5. Visual Studio中SQL SERVER CLR代碼調(diào)試工具使用講解
責任編輯:田樹 來源: 開發(fā)學院
相關推薦

2009-10-23 11:12:21

SQL Server

2009-10-23 10:08:29

SQL SERVER

2010-07-12 11:06:37

SQL Server2

2010-07-19 11:17:28

SQL Server

2010-07-23 12:55:29

SQL Server

2009-02-23 13:41:42

XML操作函數(shù)SQL Server

2010-06-17 17:11:03

SQL Server

2009-10-22 13:02:47

SQL SERVER

2010-06-30 10:15:40

SQL Server

2010-07-09 15:31:25

SQL Server

2009-09-17 19:19:17

CLR存儲過程

2010-07-09 11:06:13

SQL Server

2009-04-02 09:46:19

排名函數(shù)排序SQL 2005

2011-08-15 15:40:57

SQL Server 系統(tǒng)數(shù)據(jù)庫

2011-08-22 11:23:41

SQL Server 數(shù)據(jù)修改

2010-07-14 13:21:19

SQL Server

2010-07-06 10:36:35

SQL Server

2011-04-18 13:02:08

SQL Server SQL Server

2010-06-18 13:18:29

SQL Server

2010-06-17 15:09:49

SQL Server
點贊
收藏

51CTO技術棧公眾號