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。
我在 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。