SQL 具有可空输出参数的 Server 2016 CLR 存储过程

SQL Server 2016 CLR Stored Procedure with nullable out parameter

我在 C# 中使用以下方法定义创建了一个 CLR 存储过程:

public static void MyProcedure (SqlString path, SqlString fileName, out SqlBoolean? myValue)

但是当我尝试在 SQL Server 2016 中创建它时:

create procedure [dbo].[MyProcedure] 
     @path nvarchar(max), 
     @fileName nvarchar(max), 
     @myValue bit output
with execute as caller 
as external name [MyAssembly].[StoredProcedures].[MyProcedure]

我收到以下错误:

CREATE PROCEDURE for "MyProcedure" failed because T-SQL and CLR types for parameter "@myValue" do not match.

是否有任何可能的方法来创建具有可空输出参数的 CLR 存储过程?如果是,怎么做?

去掉C#代码中参数类型的问号。 Sql* 类型已经可以为空。

要将任何 Sql* 类型设置为 T-SQL 中的 NULL,请使用静态 Null 字段(例如 SqlBoolean.Null ).

要测试任何 Sql* 类型以查看它们是否为空,请检查布尔值 IsNull 属性(例如 if (fileName.IsNull))。

要了解有关使用 SQLCLR 的更多信息,请查看我在 SQL Server Central 上就该主题撰写的系列文章:Stairway to SQLCLR