ADO.NET: возврат строк из хранимых процедур
От: Sergey.Ka  
Дата: 17.06.07 12:37
Оценка:
Всем добрый день!
Имеем следующую хранимую процедуру:

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) возвращаются нормально. Подскажите, в чем может быть проблема?
Re: ADO.NET: возврат строк из хранимых процедур
От: mrozov  
Дата: 17.06.07 13:17
Оценка:
Здравствуйте, Sergey.Ka, Вы писали:

SK>cmd.Parameters.AddWithValue("@UserName", "");


SK>Проблема в следующем: все выходные параметры типа nvarchar содержат только первый символ строки. Другие типы (например datetime) возвращаются нормально. Подскажите, в чем может быть проблема?


Проблема может быть в непорезанной мною строке.
Вместо AddWithValue стоит использовать просто Add и указать длину строки. Вполне возможно, что это поможет
Re[2]: ADO.NET: возврат строк из хранимых процедур
От: Sergey.Ka  
Дата: 17.06.07 13:29
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Здравствуйте, Sergey.Ka, Вы писали:


SK>>cmd.Parameters.AddWithValue("@UserName", "");


SK>>Проблема в следующем: все выходные параметры типа nvarchar содержат только первый символ строки. Другие типы (например datetime) возвращаются нормально. Подскажите, в чем может быть проблема?


M>Проблема может быть в непорезанной мною строке.

M>Вместо AddWithValue стоит использовать просто Add и указать длину строки. Вполне возможно, что это поможет

Огромное спасибо. Именно указание размера помогло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.