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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLSERVER2005CLR集成之簡單SQL函數(shù)講解

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

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都做網(wǎng)站、衛(wèi)輝網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、衛(wèi)輝網(wǎng)絡(luò)營銷、衛(wèi)輝企業(yè)策劃、衛(wèi)輝品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供衛(wèi)輝建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

第一, 新建類庫,引用命名空間,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)建一個程序集,并且設(shè)置權(quán)限,默認(rèn)有三種選擇:SAFE | EXTERNAL_ACCESS | UNSAFE Safe模式就是最具限制性的權(quán)限集。由具有 SAFE 權(quán)限的程序集所執(zhí)行的代碼將無法訪問外部系統(tǒng)資源,例如文件、網(wǎng)絡(luò)、環(huán)境變量或注冊表。EXTERNAL_ACCESS 使程序集可以訪問某些外部系統(tǒng)資源,例如文件、網(wǎng)絡(luò)、環(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,(譯做標(biāo)量函數(shù)?)返回一個nvarchar。但是大家看 SQLFunctionTEST.[SQLFunctionTEST.SQLFunction]. StringToArray;

可能有點犯暈,這是哪跟哪?。繘]關(guān)系,我來講講,第一個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)建標(biāo)量函數(shù),那么代碼中的靜態(tài)函數(shù)的返回值就是 sql 函數(shù)中的返回值,還要提到的一點就是在clr 創(chuàng)建程序集的sql連接,需要使用 “context connection=true”的連接字符串。這個連接字符串我馬上就要介紹這個。


當(dāng)前題目:SQLSERVER2005CLR集成之簡單SQL函數(shù)講解
鏈接分享:http://www.dlmjj.cn/article/cdpjgoe.html