zoukankan      html  css  js  c++  java
  • 编写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存储过程:



    看看效率:


  • 相关阅读:
    11计划
    Tomcat Server.xml配置详解
    maven常用配置
    [转]Maven的内置属性说明
    PL/SQL Developer使用技巧、快捷键
    01_jeecms建站
    01_bootStrap中Tab页签切换
    利用Java实现文件中的关键字查询
    SVN服务器搭建
    MyEclipse安装插件的几种方法
  • 原文地址:https://www.cnblogs.com/insus/p/4383952.html
Copyright © 2011-2022 走看看