我可以使用打开的连接从存储过程调用 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' )
这些说明适用于微软 SQL Server 管理工作室 2014.
导入程序集
首先,您需要通过导航到“新建程序集”对话框窗口将该程序集导入到 SQL Server Management Studio 内的数据库中:
数据库名称 -> 可编程性 -> 程序集 -> (右键单击)“新程序集...”
在“New Assembly”对话框窗口中,选择Browse
在下面Path to assembly
字段并选择要导入的程序集。调整权限并点击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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)