1

SQL Server 2008 R2 支持 CLR 集成,其中 .NET 模块可以在数据库中注册,并且可以通过 SQL 存储过程、函数、触发器来调用。我们能够开发此类 .NET 模块并与 SQL Server 集成。

但是我们有一个不同的要求,它需要拦截发送到 SQL Server 的 SELECT 查询(从任何 SQL 客户端)并调用 .NET 模块并将查询参数(WHERE 子句)传递给它。

例如,如果我们在数据库中有一个表 (VarInfo),它有两列 VarID (string) 和 Value (float)。现在假设该表包含 100 个变量的记录,变量为 VarID:V001 到 V100。但是所有记录的 Value 列都是空的。价值数据不存储在数据库中。如果我们有一个 SQL 选择查询:

SELECT Value from VarInfo where VarID = 'V001'

那么 SQL Server 应该调用 .NET 模块并传递 VarID。.NET 模块应从某个外部源获取变量 Value。然后它将值返回给 SQL Server。SQL Server 应该将该值作为查询输出/结果返回。

请告知以上在 SQL Server 2008 R2 中的可行性。

谢谢,

4

1 回答 1

1

您可以获得的最接近的是CLR 用户定义函数- 但调用代码需要知道它是 UDF 并且传递参数略有不同,例如:

SELECT Value FROM dbo.CLRUDF('V001')
于 2013-08-13T12:55:18.667 回答