国产探花免费观看_亚洲丰满少妇自慰呻吟_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寫好的函數效率比較:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塔河县| 贺州市| 平罗县| 新丰县| 南通市| 西充县| 南岸区| 达日县| 政和县| 体育| 壤塘县| 巴楚县| 蒙自县| 青神县| 靖安县| 金山区| 枞阳县| 怀安县| 凌云县| 三亚市| 洪洞县| 同心县| 宁夏| 岳西县| 平湖市| 东港市| 桂阳县| 郑州市| 禄丰县| 尚志市| 枣强县| 屏山县| 淮北市| 尼玛县| 双牌县| 弥渡县| 鲁甸县| 亚东县| 衢州市| 淳安县| 镇赉县|