Всем добрый день!
Имеем следующую хранимую процедуру:
ALTER PROCEDURE dbo.ext_UploadedFiles_GetFileInfoById
@FileId uniqueidentifier,
@FileName nvarchar(256) OUTPUT,
@UserName nvarchar(256) OUTPUT,
@UploadedTime datetime OUTPUT,
@CategoryName nvarchar(50) OUTPUT
AS
BEGIN
declare @UserId uniqueidentifier
declare @CategoryId uniqueidentifier
SELECT @FileName = FileName, @UserId = UserId, @UploadedTime = UploadedTime, @CategoryId = CategoryId
FROM ext_UploadedFiles WHERE @FileId = FileId
if (@FileName IS NULL)
RETURN 2
SELECT @UserName = UserName FROM aspnet_Users WHERE @UserId = UserId
SELECT @CategoryName = CategoryName FROM ext_UploadCategories WHERE @CategoryId = CategoryId
RETURN 0
END
Часть кода, вызывающая хранимую процедуру:
cmd.Parameters.AddWithValue("@UserName", "");
cmd.Parameters["@UserName"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
Проблема в следующем: все выходные параметры типа nvarchar содержат только первый символ строки. Другие типы (например datetime) возвращаются нормально. Подскажите, в чем может быть проблема?
Здравствуйте, Sergey.Ka, Вы писали:
SK>cmd.Parameters.AddWithValue("@UserName", "");
SK>Проблема в следующем: все выходные параметры типа nvarchar содержат только первый символ строки. Другие типы (например datetime) возвращаются нормально. Подскажите, в чем может быть проблема?
Проблема может быть в непорезанной мною строке.
Вместо AddWithValue стоит использовать просто Add и указать длину строки. Вполне возможно, что это поможет
Здравствуйте, mrozov, Вы писали:
M>Здравствуйте, Sergey.Ka, Вы писали:
SK>>cmd.Parameters.AddWithValue("@UserName", "");
SK>>Проблема в следующем: все выходные параметры типа nvarchar содержат только первый символ строки. Другие типы (например datetime) возвращаются нормально. Подскажите, в чем может быть проблема?
M>Проблема может быть в непорезанной мною строке.
M>Вместо AddWithValue стоит использовать просто Add и указать длину строки. Вполне возможно, что это поможет
Огромное спасибо. Именно указание размера помогло.