簡體   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