gpt4 book ai didi

c# - SQL Server 中的 CLR 程序集 C#

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:57 24 4
gpt4 key购买 nike

  • 是否可以用 C# 做一个大项目(很多功能),然后,
  • 然后为其创建 CLR 程序集,
  • 在 SQL Server IN A STORED PROC 中,调用程序集中的函数,
  • 表(我将传递给 ASSEMBLY)是在其他存储过程中计算的...

    • 如果是这样,步骤是什么?

我是这样想的。

-- I have a stored proc that gets a table, let it be myStoredProcTable

--FIST ENABLE DATA ACCESS
EXEC sp_serveroption 'TheServerName', 'DATA ACCESS', TRUE

--main.sql calls yStoredProcTable.sql and the calls functionAssembly
SELECT *
INTO #tmpTable
FROM OPENQUERY(SERVERNAME, 'EXEC test.dbo.myStoredProcTable 1')


-- pass the table to assembly
-- how would i pass the table to assembly code?, Is this POSSIBLE?
EXEC functionAssembly #tmpTable

----------------------------------------编辑

正在关注 @faester回答: - 我如何在代码中使用 XML,我建议使用 numberTOstring东西,但我想 XML选项是最好的...

再一次,我真的这样做了,即使这不是最好的选择......

最佳答案

是的,您可以注册程序集,但由于性能问题,这很少是一个好主意。

但是,如果您对标量值进行复杂的数值计算或类似操作,它可以为您提供很大的灵 active 。但问题仍然是,SQL 本身是面向集合的,而 C# 不是,因此您很容易遇到不匹配的情况。

您还应该知道,您只能在静态类上导入静态成员。

不过举个例子此类 - 故意没有命名空间,因为似乎无法在命名空间中导入类。

    public static class Math
{
[Microsoft.SqlServer.Server.SqlFunction]
public static int Add(int a, int b)
{
return a + b;
}


[Microsoft.SqlServer.Server.SqlProcedure]
public static void Void(int a, int b)
{
}
}

需要一些 SQL 才能让服务器准备就绪,您可能需要成为管理员。

    EXEC SP_CONFIGURE 'clr enabled', 1
GO
RECONFIGURE
GO
-- CONSIDER: DROP ASSEMBLY SqlClr
GO
CREATE ASSEMBLY SqlClr
FROM 'pathtoassembly'
WITH PERMISSION_SET = SAFE;
GO
SELECT * FROM sys.assemblies
GO
CREATE FUNCTION [MathAdd] (@a int, @b int)
RETURNS INT
AS EXTERNAL NAME [SqlClr].Math.[Add]
GO
CREATE PROCEDURE [Void] @a INT, @b INT
AS EXTERNAL NAME [SqlClr].Math.[Void]
GO
SELECT dbo.MathAdd (1, 2)
EXEC void 1, 2

再次声明:您真的应该确信您需要这个,这很少是个好主意! (我曾将它用于电子邮件验证、dns 查找等,但那是在一个所有业务逻辑都用 SQL 编写的系统上。这很糟糕!)

一些有用的引用:

http://msdn.microsoft.com/en-us/library/ms189524.aspx

http://www.codeproject.com/KB/database/CLR_in_Sql_Server_2005.aspx

关于c# - SQL Server 中的 CLR 程序集 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com