【问题标题】:How to select rows inside a CLR stored procedure in MS SQL Server 2008?如何在 MS SQL Server 2008 的 CLR 存储过程中选择行?
【发布时间】:2013-09-06 21:53:46
【问题描述】:

根据我在 Internet 上找到的示例,我编写了以下 C# 代码,用于在 MS SQL Server 2008 中实现 CLR 存储过程:

public class Class1
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void CountStringLength(string inputString)
    {
        SqlContext.Pipe.Send(inputString.Length.ToString());            
    }
}

此过程以字符串为参数,输出字符串中的字符数。

我一直在编写一些从 SQL 检索数据的代码;检索数据的方式没有什么特别之处:它与 SQL 服务器建立连接,选择数据,然后关闭连接。我想让这段代码在我的 SQL 服务器上的存储过程或触发器中运行。

我想我可以使代码运行与现有 SQL 代码完全相同:连接到 SQL 服务器,选择数据,然后关闭连接。但是,一旦代码在 SQL 服务器本身上运行,这就没有意义了!为什么我希望在 SQL 服务器上运行的代码使服务器连接到自身?!?!

对于我正在尝试做的事情,是否有最佳做法?我可以使用用于执行存储过程的相同连接在我的代码中选择行吗?

【问题讨论】:

    标签: sql sql-server sqlclr clrstoredprocedure


    【解决方案1】:

    我在这里找到了答案:http://technet.microsoft.com/en-us/library/ms131053.aspx

    CLR 过程运行的连接称为“上下文连接”,它的使用方式如下:

    using(SqlConnection connection = new SqlConnection("context connection=true")) 
    {
        connection.Open();
        // Use the connection
    }
    

    我想知道为什么你必须“打开”连接?我认为连接已经打开,因为它正在执行正在运行的过程。

    也密切相关:http://msdn.microsoft.com/en-us/library/938d9dz2(v=vs.90).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多