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

12 浏览
0 Comments

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

“可能是重复的问题:将nvarchar值\'Internet Explorer 3原始\'转换为int数据类型时转换失败。”\n所以我创建了以下简单的存储过程:\nCREATE PROCEDURE test\nAS\nBEGIN\n RETURN \'works!\'\nEND\nGO\n然后我想通过执行以下语句来执行它:\nEXEC test\n为什么我一直得到以下错误?\n“将varchar值\'works!\'转换为int数据类型时转换失败。”\n哦,顺便说一下,在存储过程的末尾使用GO语句是什么时候必要的?我猜在这里它没有任何效果,因为当我返回我的@out字符串时,它会跳出存储过程。

0
0 Comments

问题的原因是使用RETURN语句只能返回一个整数值,无法返回字符串。解决方法有两种:一种是使用SELECT语句来返回字符串,另一种是使用OUTPUT参数将字符串赋值给调用者的变量。

第一种解决方法是在存储过程中使用SELECT语句来返回字符串。例如,在下面的示例中,存储过程"test"使用SELECT语句返回字符串"works!"。

CREATE PROCEDURE test
AS
BEGIN
   SELECT 'works!'
END

第二种解决方法是在存储过程中使用OUTPUT参数将字符串赋值给调用者的变量。在下面的示例中,存储过程"test"使用OUTPUT参数将字符串"works!"赋值给变量。

CREATE PROCEDURE test
     @output VARCHAR(20) OUTPUT
AS
BEGIN
    SET @output = 'works!'
END
DECLARE @result VARCHAR(20)
EXECUTE test @result OUTPUT

需要注意的是,在第二种解决方法中,必须在存储过程的末尾使用SELECT语句才能将输出结果返回给调用者。

当使用存储过程返回字符串时,需要注意RETURN语句只能返回整数值,需要使用SELECT语句或OUTPUT参数来返回字符串,并且在第二种解决方法中需要在存储过程的末尾使用SELECT语句来输出结果。

0