繁体   English   中英

使用当前连接从sql存储过程调用dll函数

[英]Call dll function from sql stored procedure using the current connection

我可以使用打开的连接从存储过程中调用dll吗?

我有一个从SQL Server获取数据的dll,并且从存储过程中调用它时我不想打开新连接。

谢谢

这是一个例子

public class Class1
{
    public static SqlString GetName(SqlString str)
    {
        SqlCommand cmd = new SqlCommand(str.ToString());
        cmd.CommandType = System.Data.CommandType.Text;

        string name = cmd.ExecuteScalar().ToString();
        return name;
    }
}

这是SQL代码

CREATE FUNCTION fn_TestConnection
(
    @str nvarchar(255)
)
RETURNS nvarchar(max)
AS EXTERNAL NAME TestConnection.[TestConnection.Class1].GetName
GO

SELECT dbo.fn_TestConnection('SELECT FName FROM Clients WHERE Id = 1' )

这些说明适用于Microsoft SQL Server Management Studio 2014

导入装配

首先,需要通过导航到“新建程序集”对话框窗口将该程序集导入到SQL Server Management Studio中的数据库中:

DatabaseName->可编程性->程序集->(右键单击)“ New Assembly ...”

在“新装配”对话框窗口中,在“ Path to assembly字段下选择“ Browse ”,然后选择要导入的装配。 调整权限,然后单击ok

在SQL函数中包装汇编方法

接下来,您需要创建sql函数来包装您的组装方法,如下所示:

CREATE FUNCTION [dbo].[fn_funcName](@str [varchar](max))
RETURNS 
   varchar(max) 
WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [YourSqlAssemblyName].[YourAssemblyName.Class1].[GetName]

如果要从函数返回表,请阅读有关.NET中的SqlFunctionAttribute的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM