C# 插入行后SQL Server存储过程返回列数据的字符串值被截断

C# 插入行后SQL Server存储过程返回列数据的字符串值被截断,c#,sql,sql-server,C#,Sql,Sql Server,我一直试图在插入后返回字符串值,但是我的数据总是被截断。它只返回字符串的第一个字符 我的存储过程: ALTER PROC [dbo].[usp_add_user] (@firstName nvarchar(50), @lastName nvarchar(50), @email nvarchar(100), @password nvarchar(100), @userID nvarchar(50) OUTPUT) AS BEGIN SET @

我一直试图在插入后返回字符串值,但是我的数据总是被截断。它只返回字符串的第一个字符

我的存储过程:

ALTER PROC [dbo].[usp_add_user]
    (@firstName nvarchar(50),
     @lastName nvarchar(50),
     @email nvarchar(100),
     @password nvarchar(100),
     @userID nvarchar(50) OUTPUT)
AS
BEGIN
    SET @userID = newid()

    INSERT INTO [User] ([UserID], [FirstName], [LastName], [Email], [Password])
    VALUES (@userID, @firstName, @lastName, @email, @password)

    SELECT @userID;
END
我的C#我是如何抓住价值的

access.Parameter["@userID"].Value.ToString();
当我在SQLServerManagementStudio中执行存储过程时,它正确地显示了所有内容,我的
@userID
是正确的。然而,当它回到我的Visual Studio时,我只得到第一个角色


谢谢

您需要指定大小以获取整个字符串

cmd.Parameters.Add(new SqlParameter("@userID", SqlDbType.NVarChar, 50));
cmd.Parameters["@userID"].Direction = ParameterDirection.Output;