Результатом строки OUTPUT хранимой процедуры является только один символ вместо полной строки - PullRequest
0 голосов
/ 16 июня 2019

У меня есть некоторые проблемы с этим кодом, я хочу получить возвращаемую переменную "Sơn" вместо 'S'

Мой код:

SentoDB.RunProcedure("usp_GetNameWithIdCategory");
SqlParameter CategoryID = new SqlParameter("CategoryID", SqlDbType.Int);
CategoryID.Value = Int32.Parse(item.Value);
SqlParameter result = new SqlParameter("result", SqlDbType.NVarChar);
result.Direction = ParameterDirection.Output;
result.Value = string.Empty;
SentoDB.AddParameters(CategoryID);
SentoDB.AddParameters(result);
SentoDB.LoadProcedure();

Переменная result.Value.ToString() это 'S' вместо "Sơn"

public void RunProcedure(string procedureName)
{
    cmd = new SqlCommand(procedureName, connect);
    cmd.CommandType = CommandType.StoredProcedure;
}

public void LoadProcedure()
{
    connect.Open();
    cmd.ExecuteNonQuery();
    connect.Close();
}

Хранимая процедура в SQL:

CREATE PROCEDURE usp_GetNameWithIdCategory 
     (@CategoryID INT, @result NVARCHAR(MAX) OUTPUT)
AS
BEGIN
    SELECT @result = Cate.Name 
    FROM Category AS Cate 
    WHERE Cate.CategoryID = @CategoryID
END

1 Ответ

2 голосов
/ 16 июня 2019

Попробуйте добавить размер к параметру. У меня была такая же проблема с varbinary, пока не добавили размер.

...