2016-05-01 60 views
-2

下面我有相同的代码:存储过程返回nvarchar的

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

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

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

    RETURN @name; 

顶部的代码是OK,但第二个我得到一个错误:

消息245,第16层,状态1,过程TEST2,第174行
转换nvarchar值'NguyễnThanh Tùng'为数据类型int。

你能帮我解释一下吗?

回答

1

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

参见"Returning Data Using a Return Code" MSDN文档其中明确规定:

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

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

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