null可能なguidパラメータを下のC#コードのストアドプロシージャに渡すと、私は例外を取得しています:null可能なGUIDをストアドプロシージャに渡す
System.Data.SqlClient.SqlException(0x80131904): 近くに不適切な構文 'を@customerGuid'。
var userNameSqlParam = new SqlParameter
{
ParameterName = "userName",
Value = userName,
DbType = DbType.String
};
var customerGuidSqlParam = new SqlParameter
{
ParameterName = "customerGuid",
Value = customerGuid,
DbType = DbType.Guid
};
var rows = _dbContext.Database
.SqlQuery<CurrentUserContextWithoutCustomer>
("EXEC [dbo].[GetCurrentUserContext] @userName @customerGuid",
userNameSqlParam, customerGuidSqlParam)
.ToList();
私が呼ばれていたものをSQLプロファイラで見たときだから、私は、クエリの最後にデフォルトを参照してください
exec sp_executesql
N'EXEC [dbo].[GetCurrentUserContext] @userName @customerGuid',
N'@userName nvarchar(4),@customerGuid uniqueidentifier',
@userName=N'gir1',@customerGuid=default
を取得します。それは問題を引き起こす。 私は、ストアドプロシージャのパラメータとしてSQLにNULL可能GUIDを渡すことができますどのようにストアドプロシージャ
ALTER PROCEDURE [dbo].[GetCurrentUserContext]
@userName nvarchar(100),
@customerGuid uniqueidentifier
AS
のヘッダがあります。あなたのストアドプロシージャで
いいえ、ただちに – Jacek
「EXEC」ステートメントでパラメータをカンマで区切る必要があります。 –