2013-04-29 1 views
1

테이블에서 문자열을 검색 할 때이 간단한 SQL 문에서이 오류가 발생합니다.varchar 값 '내 반환 값'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다

메시지 245, 수준 16, 상태 1, 절차 prViewRequirements, 줄 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

어느 라인? – Patashu

+0

18 번 줄은 - WHERE WFRouteID = @WFRouteID –

답변

3

int 대신 varchar를 반환하려고합니다.

RETURN @DocumentDescription 

하시기 바랍니다 중 하나

select @DocumentDescription 

을하거나 (권장) 출력 매개 변수

ALTER PROCEDURE [dbo].[prViewRequirements] 
    @WFRouteID int 
    , @DocumentDescription varchar(100) = null output 

UPDATE 사용 - 여기에 모든 절차 :

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 
*/ 
+0

각 결과에 대해 NULL이 계속 반환됩니다. –

+0

그것은 나를 위해 일했습니다. OUTPUT 키워드를 복사하여 붙여 넣으십시오. –

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 
+1

이 코드에서 여전히 같은 오류가 발생합니다. –

+0

죄송합니다. 약간의 실수가 있습니다. 업데이트 된 답변을 시도하십시오. – Devart

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 

는 시저를 실행하여 아래와 같이 18 라인

DECLARE @res varchar(100) 
exec dbo.prViewRequirements @WFRouteID,@[email protected] OUTPUT 
select @res 
관련 문제