• 编写CLR存储过程中使用SqlDataRecord


    温习一下这些天学习的CLR编程,存储过程,函数。
     
    编写CLR的存储过程,运行起来的效率,果然比普通的SQL语句,存储过程或是函数均高。

    以后专案需求,或是执行效率较高的SQL,得写成CLR程序,再部署至SQL中去,这样可以解决问题。

     


    可复制代码:

     [Microsoft.SqlServer.Server.SqlProcedure]
        public static void GetFruitByKind(SqlByte kind_nbr)
        {
            SqlConnection connection = new SqlConnection("context connection=true");
            connection.Open();
    
            string commandText = "SELECT [Fruit_nbr],[FruitKind_nbr],[FruitName] FROM [dbo].[Fruit] WHERE [FruitKind_nbr] = @Kind_nbr ";
    
            SqlCommand command = new SqlCommand(commandText, connection);
    
            SqlParameter param = new SqlParameter("@Kind_nbr", SqlDbType.TinyInt);
            param.Value = kind_nbr;
            command.Parameters.Add(param);
    
            SqlDataReader reader = command.ExecuteReader();
    
            SqlDataRecord record = new SqlDataRecord(
            new SqlMetaData("Fruit_nbr", SqlDbType.TinyInt),
            new SqlMetaData("FruitKind_nbr", SqlDbType.TinyInt),
            new SqlMetaData("FruitName", SqlDbType.NVarChar, 100, 1033, SqlCompareOptions.None)
            );
    
            SqlContext.Pipe.SendResultsStart(record);
    
            while (reader.Read())
            {
                record.SetByte(0, Convert.ToByte(reader["Fruit_nbr"]));
                record.SetByte(1, Convert.ToByte(reader["FruitKind_nbr"]));
                record.SetString(2, reader["FruitName"].ToString());
    
                SqlContext.Pipe.SendResultsRow(record);
            }
    
            SqlContext.Pipe.SendResultsEnd();
        }
    View Code


    编译与部署至SQL之后,可看到新创建的CLR存储过程:



    看看效率:


  • 相关阅读:
    jquery 获取各种屏幕的宽度和高度
    我相信 Kenny
    C# 预览和打印出来的位置不符的问题 Kenny
    地址,数据位的一些理解:战舰板子
    OLED显示并口方式:
    __attribute__机制介绍
    大端模式 & 小端模式
    OV7670:
    STM32 Program Size: Code=29578 ROdata=4010 RWdata=488 ZIdata=1856
    DS18B20实验:神舟IV
  • 原文地址:https://www.cnblogs.com/insus/p/4383952.html
Copyright © 2020-2023  润新知