将varchar值转换为数据类型int时转换失败 - 调用存储过程时
问题描述:
我有一个简单的存储过程,它接受INT的一个输入。该过程还将一个值(@KEY)声明为VARCHAR。该过程的逻辑将@KEY的值设置为字母数字值。将varchar值转换为数据类型int时转换失败 - 调用存储过程时
最后,该过程返回@KEY的值:
ALTER PROCEDURE [dbo].[sp_Get_KEY]
@member Int
AS
BEGIN
SET NOCOUNT ON
DECLARE @KEY VARCHAR(12)
SET @KEY = ''
IF Exists (Select * From Version Where NAME = 'WIN' AND MEMBER = @member)
Begin
Set @KEY = '95+'
End
RETURN @KEY
END -- END OF PROCEDURE
当我调用使用的程序:
申报@return_key VARCHAR(20) EXEC @return_key = dbo.sp_Get_KEY 2222
我收到以下错误:
将varchar值'95 + E'转换为数据类型int时转换失败。
任何想法?
答
您可以使用out参数或resulset返回任何数据类型。
返回值应该总是整数
ALTER PROCEDURE [dbo].[sp_Get_KEY]
@member Int
,@KEY VARCHAR(12) OUTPUT
AS
BEGIN
SET NOCOUNT ON
--DECLARE @KEY VARCHAR(12)
SET @KEY = ''
IF Exists (Select * From Version Where NAME = 'WIN' AND MEMBER = @member)
Begin
Set @KEY = '95+'
End
RETURN 0;
END
例子:
declare @KEY VARCHAR(12);
exec dbo.sp_Get_KEY 2222, @KEY OUTPUT;
--SELECT @KEY;
PRINT @KEY;
如果你只是用'EXEC dbo.sp_Get_KEY 2222'什么? –
请参阅https://docs.microsoft.com/zh-cn/sql/relational-databases/stored-procedures/return-data-from-a-stored-procedure – Serg