我的代码如下:
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时转换失败。
你能帮我解释一下吗?
答案 0 :(得分:1)
您无法使用varchar
从SQL Server存储过程返回RETURN
- 您只能返回整数值。
请参阅"Returning Data Using a Return Code"上的MSDN文档,其中明确指出:
过程可以返回一个名为返回代码的整数值,以指示过程的执行状态。
通常,此类值用于指示受存储过程影响的行数,或用于指示错误代码。
如果需要返回字符串,则必须使用OUTPUT
参数,或返回结果集(使用SELECT
语句)。