我有一个简单的存储过程,它接受INT的一个输入。该过程还将一个值(@KEY)声明为VARCHAR。该过程的逻辑将@KEY的值设置为字母数字值。
最后,该过程返回@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。
有什么想法吗?
答案 0 :(得分:0)
您可以使用out参数或结果集来返回任何数据类型 返回值应始终为整数
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;