假设我有简单的C#代码,如此显示“HELLO WORLD”:在这里。
他们在该页面中说:
这个主题提供了一个概述,介绍了使用Microsoft SQL Server与Microsoft .NET Framework公共语言运行时(CLR)集成编译数据库对象所需的命名空间和库。该主题还向您展示如何编写、编译和运行使用Microsoft Visual C#编写的简单CLR存储过程。CLR集成功能暴露在一个名为system.data.dll的程序集中,该程序集是.NET Framework的一部分。该程序集可以在全局程序集缓存(GAC)以及.NET Framework目录中找到。这个程序集的引用通常会被命令行工具和Microsoft Visual Studio自动添加,因此不需要手动添加。
创建后(编译并将其添加到路径dll),您可以像以下方式一样将该代码用作存储过程:
放弃该过程:
一旦该过程被删除,您可以移除包含样本代码的程序集。
在这个介绍之后:
我需要使用一个同时使用外部dll的C++代码,我的问题是:
如何在C#中使用我的C++代码(也使用外部dll),就像示例中一样,在创建程序集后,当我执行存储过程时,以下内容是透明的:
1. SQL创建程序集,然后调用dll中的C#代码。
2. C#代码调用C++代码(在dll中)。
3. C++代码调用外部dll。
所以我只需要执行
EXEC hello
所有这些发生的事情(SQL SERVER-> C#-> C++->外部dll)。
如何使所有这些dll同时运行并共存,以便我只需在SQL Server中执行存储过程,例如
EXEC hello
我正在考虑
using System;
using System.Data;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
public class HelloWorldProc
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void HelloWorld()
{
SqlContext.Pipe.Send("HELLO WORLD!\n");
}
}
他们在该页面中说:
这个主题提供了一个概述,介绍了使用Microsoft SQL Server与Microsoft .NET Framework公共语言运行时(CLR)集成编译数据库对象所需的命名空间和库。该主题还向您展示如何编写、编译和运行使用Microsoft Visual C#编写的简单CLR存储过程。CLR集成功能暴露在一个名为system.data.dll的程序集中,该程序集是.NET Framework的一部分。该程序集可以在全局程序集缓存(GAC)以及.NET Framework目录中找到。这个程序集的引用通常会被命令行工具和Microsoft Visual Studio自动添加,因此不需要手动添加。
创建后(编译并将其添加到路径dll),您可以像以下方式一样将该代码用作存储过程:
CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE
一旦程序集被创建,我们现在可以使用“create procedure”语句访问我们的HelloWorld方法。我们将调用我们的存储过程为“hello”:
CREATE PROCEDURE hello
AS
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld
一旦存储过程被创建,它可以像普通的 Transact-SQL 存储过程一样运行。执行以下命令:
EXEC hello
放弃该过程:
drop procedure hello
一旦该过程被删除,您可以移除包含样本代码的程序集。
drop assembly helloworld
在这个介绍之后:
我需要使用一个同时使用外部dll的C++代码,我的问题是:
如何在C#中使用我的C++代码(也使用外部dll),就像示例中一样,在创建程序集后,当我执行存储过程时,以下内容是透明的:
1. SQL创建程序集,然后调用dll中的C#代码。
2. C#代码调用C++代码(在dll中)。
3. C++代码调用外部dll。
所以我只需要执行
EXEC hello
所有这些发生的事情(SQL SERVER-> C#-> C++->外部dll)。
如何使所有这些dll同时运行并共存,以便我只需在SQL Server中执行存储过程,例如
EXEC hello
我正在考虑
[DllImport("cCode.dll")]
但如果C++代码依赖于外部DLL...我就会迷失方向。