国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

返回標量CLR自定義函數

2024-07-21 02:47:28
字體:
來源:轉載
供稿:網友
返回標量CLR自定義函數

昨天有學習了返回表自定義函數《CLR Table-Valued函數》http://www.cnblogs.com/insus/p/4378354.html。今天學習另一個,實現返回標量(Scalar-valued) function。

這個標量函數獲取分類全名。

SELECT [CategoryName] + '--' + [KindName] + '--' + [FruitName] FROM [dbo].Tvf_Fruit() WHERE [Fruit_nbr] = @Fruit_nbr
View Code

想把這句寫成一個標量函數public static SqlString Tvf_GetFullName(SqlByte fruit_nbr),編寫clr函數,應當使用static關鍵詞。參考數據類型,使用SQL CLR TYPE。可復制代碼:

 [SqlFunction(Dataaccess = DataAccessKind.Read)]    public static SqlString Tvf_GetFullName(SqlByte fruit_nbr)    {        SqlConnection connection = new SqlConnection("Context connection=true");        connection.Open();        SqlCommand command = new SqlCommand();        command.Connection = connection;        command.CommandText = "SELECT [CategoryName] + '--' + [KindName] + '--' + [FruitName] FROM [dbo].Tvf_Fruit() WHERE [Fruit_nbr] = @Fruit_nbr";        SqlParameter param = new SqlParameter("@Fruit_nbr", SqlDbType.TinyInt);        param.Value = fruit_nbr;        command.Parameters.Add(param);        string rtn = Convert.ToString(command.ExecuteScalar());        connection.Close();        return new SqlString(rtn);    }
View Code

編譯為dll。然后部署至SQL,可執行下面代碼,也可以參考前幾篇的手動在Microsoft SQL Server Management Stuido下進行。更詳細《簡單創建與布署CLR存儲過程》http://www.cnblogs.com/insus/p/4371762.html:

可復制代碼:

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'Tvf_GetFullName')    DROP FUNCTION Tvf_GetFullName;GOIF EXISTS (SELECT * FROM sys.assemblies WHERE name = 'FruitClr')    DROP ASSEMBLY FruitClr;GOCREATE ASSEMBLY FruitClrFROM 'E:/FruitClr.dll' WITH PERMISSION_SET = SAFE;GOCREATE FUNCTION Tvf_Fruit()RETURNS TABLE (    Fruit_nbr TINYINT,    FruitCategory_nbr TINYINT,    CategoryName NVARCHAR(30),    FruitKind_nbr TINYINT,    KindName NVARCHAR(30),    FruitName NVARCHAR(30))ASEXTERNAL NAME [FruitClr].UserDefinedFunctions.Tvf_Fruit;GOCREATE FUNCTION Tvf_GetFullName(@Fruit_nbr tinyint) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME [FruitClr].UserDefinedFunctions.Tvf_GetFullName; GO
View Code

執行結果:

下面可對比一下普通的SQL語句與Clr寫好的函數效率比較:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太白县| 宁津县| 任丘市| 安徽省| 张北县| 海盐县| 昌黎县| 盐山县| 萨嘎县| 定陶县| 泾川县| 渭源县| 锡林郭勒盟| 长宁县| 邵武市| 龙南县| 临泉县| 邵东县| 昌邑市| 海兴县| 鄱阳县| 新晃| 青冈县| 灵台县| 克山县| 罗山县| 扶风县| 吐鲁番市| 贵港市| 交城县| 镇江市| 汾西县| 陵水| 金阳县| 黎平县| 淮阳县| 甘孜县| 昔阳县| 崇仁县| 徐州市| 林西县|