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

时间:2017-11-29 02:24:22

标签: 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 @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();

当我在SQL Server Management Studio中执行存储过程时,它会正确显示所有内容,@userID是正确的。但是当它回到我的Visual Studio时,我只得到第一个字符

谢谢

1 个答案:

答案 0 :(得分:1)

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

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