SQL server 2016 CLR gespeicherte Prozedur mit nullable out Parameter

Ich habe eine CLR gespeicherte Prozedur mit der folgenden methodsdefinition in C # erstellt:

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

Aber wenn ich versuche, es in SQL server 2016 zu erstellen:

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

Bekomme ich folgende Fehlermeldung:

CREATE PROCEDURE für "MyProcedure" fehlgeschlagen, da T-SQL- und CLR-Typen für Parameter "@myValue" nicht übereinstimmen.

Gibt es eine Möglichkeit, eine CLR gespeicherte Prozedur zu erstellen, die einen nullable out Parameter hat? Und wenn ja, wie?

Nehmen Sie das Fragezeichen vom Parameter-Typ in den C # -Code. Die Sql* -Typen sind bereits nullable.

Um einen der Sql* -Typen auf NULL in T-SQL zu setzen, verwenden Sie das statice Null Feld (zB SqlBoolean.Null ).

Um einen der Sql* -Typen zu testing, um zu sehen, ob sie null sind, überprüfen Sie die boolesche IsNull Eigenschaft (zB if (fileName.IsNull) ).

Um mehr über die Arbeit mit SQLCLR im Allgemeinen zu erfahren, werdet ihr einen Blick auf die Serie casting, die ich auf diesem Thema auf SQL server Central schreibe (diese Seite erfordert kostenlose Registrierung, um ihre Inhalte zu sehen, aber es lohnt sich): Treppenhaus zu SQLCLR .