在尝试从表中检索字符串时,我在这个简单的SQL语句中收到此错误。
Msg 245,Level 16,State 1,Procedure prViewRequirements,Line 18 转换varchar值'博士的心脏评估问卷'时转换失败数据类型int。
/****** Object: StoredProcedure [dbo].[prViewRequirements] Script Date: 04/24/2013 15:44:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[prViewRequirements]
@WFRouteID int
AS
DECLARE
@DocumentDescription VARCHAR(100)
SELECT @DocumentDescription = DocumentDescription
FROM tbFollowOnTracking
WHERE WFRouteID = @WFRouteID
AND IsActive = 1
IF (@@ERROR <> 0)
GOTO ERRSP
RETURN @DocumentDescription
ERRSP:
RETURN -1
有谁知道为什么?
答案 0 :(得分:3)
您正在尝试返回varchar而不是int。
RETURN @DocumentDescription
请做
select @DocumentDescription
或使用输出参数(推荐)
ALTER PROCEDURE [dbo].[prViewRequirements]
@WFRouteID int
, @DocumentDescription varchar(100) = null output
更新 - 这是整个程序:
alter procedure dbo.prViewRequirements
@WFRouteID int
, @DocumentDescription varchar(100) = null output
AS
select @DocumentDescription = '' -- Init
select @DocumentDescription = DocumentDescription
from tbFollowOnTracking
where WFRouteID = @WFRouteID
and IsActive = 1
return 0
go
/* Examples
declare @DocumentDescription varchar(100) = ''
exec dbo.prViewRequirements @WFRouteID = 10, @DocumentDescription = @DocumentDescription output
select @DocumentDescription
*/
答案 1 :(得分:0)
试试这个 -
ALTER PROCEDURE [dbo].[prViewRequirements]
@WFRouteID INT
, @DocumentDescription VARCHAR(100) OUTPUT
AS BEGIN
SELECT @DocumentDescription = t.DocumentDescription
FROM dbo.tbFollowOnTracking t
WHERE t.WFRouteID = @WFRouteID
AND t.IsActive = 1
IF @DocumentDescription IS NULL
RETURN -1
RETURN 0
END
答案 2 :(得分:0)
试试这个:
alter procedure dbo.prViewRequirements
@WFRouteID int
, @DocumentDescription varchar(100) = null output
AS
BEGIN
select @DocumentDescription = '' -- Init
select @DocumentDescription = DocumentDescription
from tbFollowOnTracking
where WFRouteID = @WFRouteID
and IsActive = 1
END
执行proc,如下所示
DECLARE @res varchar(100)
exec dbo.prViewRequirements @WFRouteID,@DocumentDescription=@res OUTPUT
select @res