2017-03-01 6 views
1

パラメータでストアドプロシージャ:SQL Serverの2016 CLRが出てNULL可能私はC#で次のメソッドの定義とCLRストアドプロシージャを作成している

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

をしかし、私は2016年のSQL Serverで作成しようとすると、

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.

はproced保存されたCLRを作成するために、すべての可能な方法はありますureはnullable outパラメータを持っていますか?そしてもしそうなら、どうですか?

答えて

0

C#コードのパラメータタイプの疑問符を外します。 Sql*の型はすでにnull可能です。

Sql*タイプのいずれかをT-SQLのNULLに設定するには、スタティックNullフィールド(例:SqlBoolean.Null)を使用します。

Sql*タイプのいずれかをテストしてヌルかどうかを調べるには、ブール値IsNull(例:if (fileName.IsNull))をチェックします。

一般的なSQLCLRの使用方法の詳細については、SQL Server Centralのこのトピックで書いているシリーズを参照してください。Stairway to SQLCLR

+0

次に、値をnullに設定するにはどうすればよいですか? 'myValue = null'を試してみると、「NULLを 'System.Data.SqlTypes.SqlBoolean'に変換できません」というコンパイル時のエラーが返されます。これはnullable型ではないためです。 –

+0

うれしいことです。もう少し情報を追加して、私が参考にしている一連の記事へのリンクを追加しました。 –

関連する問題