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

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

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

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

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

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

第三,該方法具有返回值, 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. }  

第四,編譯此類庫(kù)。

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

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

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

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

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

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

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

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

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

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

再附上一個(gè)使用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. }; 

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

【編輯推薦】

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

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

2009-10-22 13:02:47

SQL SERVER

2010-06-30 10:15:40

SQL Server

2010-06-17 17:11:03

SQL Server

2009-09-17 19:19:17

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

2010-07-09 15:31:25

SQL Server

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ù)庫(kù)

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-07-12 11:38:24

SQL Server函

2010-06-18 13:18:29

SQL Server
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 精品国产乱码久久久久久蜜臀 | 久久一区二区三区四区五区 | 在线观看三级av | 久久99成人| 91免费版在线观看 | 国产一区二区三区精品久久久 | 天天看逼| 欧美久久一区二区三区 | 97精品超碰一区二区三区 | 精品视频一区二区 | 久久久久久久久毛片 | 欧美国产激情二区三区 | 精品一区二区三区在线视频 | 欧美日韩成人 | 蜜臀久久99精品久久久久野外 | 午夜影院中文字幕 | 女人一区 | 午夜激情视频 | 亚洲国产一区二区三区在线观看 | 国产精品不卡一区 | 一级看片免费视频囗交动图 | 日韩电影a| 91麻豆精品一区二区三区 | 中文字幕91av | 精品久久香蕉国产线看观看亚洲 | 欧美日韩精品一区二区三区四区 | 午夜影晥| 欧美1级 | 欧美激情精品久久久久久 | 国产免费一级一级 | 成人亚洲网站 | 日韩综合网 | 免费黄色av | aaa大片免费观看 | 99免费在线视频 | 亚洲精品91| 亚洲一区中文 | 全部免费毛片在线播放网站 | 欧美精品久久久久 | 国产成人免费在线 | 午夜精品一区二区三区在线视频 |