存储过程返回一个字符串?

Pas*_*ber 7 sql varchar stored-procedures return sql-server-2008

可能重复:
将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败

所以我创建了以下简单的存储过程:

CREATE PROCEDURE test
AS
BEGIN
    RETURN 'works!'
END
GO
Run Code Online (Sandbox Code Playgroud)

然后,我想通过触发以下语句来执行它:

EXEC test
Run Code Online (Sandbox Code Playgroud)

为什么我一直收到以下错误?

转换varchar值'works!'时转换失败 到数据类型int.

哦,顺便说一句,(何时)是否有必要在存储过程结束时使用GO语句?我想它在这里没有任何效果,因为当我撤回我的@out字符串时它会跳出程序.

Ada*_*Dev 20

使用RETURN只允许您返回INTEGER代码

您需要选择值

   CREATE PROCEDURE test
   AS
   BEGIN
       SELECT 'works!'
   END
Run Code Online (Sandbox Code Playgroud)

或者如果要在调用者中分配变量,请使用OUTPUT参数

CREATE PROCEDURE test
    @outputVal VARCHAR(20) OUTPUT
AS
BEGIN
    SET @outputVal = 'works!'
END

DECLARE @val VARCHAR(20)
EXECUTE test @val OUTPUT
Run Code Online (Sandbox Code Playgroud)