存储过程返回nvarchar

时间:2016-05-01 08:26:58

标签: sql-server-2008 stored-procedures

我的代码如下:

CREATE PROCEDURE TEST1 
    (@id INT, @name NVARCHAR(30) OUTPUT)
AS
    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id;

AND

CREATE PROCEDURE TEST2(@id INT)
AS
    DECLARE @name NVARCHAR(30);

    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id;

    RETURN @name;

顶级代码没问题,但第二个我收到错误:

  

Msg 245,Level 16,State 1,Procedure TEST2,Line 174
  将nvarchar值'NguyễnThanhTùng'转换为数据类型int时转换失败。

你能帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

无法使用varchar从SQL Server存储过程返回RETURN - 您只能返回整数值。

请参阅"Returning Data Using a Return Code"上的MSDN文档,其中明确指出:

  

过程可以返回一个名为返回代码的整数值,以指示过程的执行状态。

通常,此类值用于指示受存储过程影响的行数,或用于指示错误代码。

如果需要返回字符串,则必须使用OUTPUT参数,或返回结果集(使用SELECT语句)。