下面还有相同的代码:
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;
上面的代码是可以的,但是第二次我得到一个错误:
Msg 245,16级,状态1,过程TEST2,第174号线 当将nvarchar值'Nguyễn Thanh T?ng‘转换为数据类型int时,转换失败。
你能帮我解释一下吗?
发布于 2016-05-01 01:42:21
不能使用varchar
从Server存储过程返回-只能返回整数值。
请参阅“使用返回代码返回数据”上的MSDN文档,其中明确指出:
过程可以返回称为返回代码的整数值,以指示过程的执行状态。
通常,这样的值用于指示受存储过程影响的行数,或者用于指示错误代码。
如果需要返回字符串,则必须使用OUTPUT
参数或返回结果集(使用SELECT
语句)。
https://stackoverflow.com/questions/36964629
复制相似问题