9

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

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

CREATE PROCEDURE test
AS
BEGIN
    RETURN 'works!'
END
GO

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

EXEC test

为什么我总是收到以下错误?

转换 varchar 值“有效!”时转换失败 为数据类型 int。

哦,顺便说一句,(何时)有必要在存储过程的末尾使用 GO 语句吗?我想它在这里不起作用,因为当我返回我的@out 字符串时它会跳出过程。

4

1 回答 1

22

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

您要么需要选择值

   CREATE PROCEDURE test
   AS
   BEGIN
       SELECT 'works!'
   END

或者,如果您想分配给调用者中的变量,请使用 OUTPUT 参数

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

DECLARE @val VARCHAR(20)
EXECUTE test @val OUTPUT
于 2012-11-30T16:38:57.717 回答