나는이 질문을 모두 stackoverflow에서 보았지만 그 상황에 맞는 해결책이 많습니다. 내가 말할 수있는 한 독특한 상황이있는 것 같습니다. 내가 뭔가를 여기SQL 서버에서 varchar를 INT로 변환 할 때 문제가 발생했습니다.
set @MatchType = dbo.GetMatchType(@CAReturnCode,@CAErrorCodes)
에 실패합니다이 SQL 문
use IST_CA_2_Batch_Conversion
GO
--T-SQL script to populate the Match type column
declare @MatchType varchar(16),
@PK varchar(500),
@CAReturnCode VARCHAR(255),
@CAErrorCodes VARCHAR(255)
declare cursor1 cursor fast_forward for
select
["Ref#"],
["Return Code"],
["Error Codes"]
from CACodes2MatchType
open cursor1
fetch next from cursor1 into @PK,@CAReturnCode,@CAErrorCodes
while @@fetch_status = 0
begin
set @MatchType = dbo.GetMatchType(@CAReturnCode,@CAErrorCodes)
update CACodes2MatchType
set [Match Type] = @MatchType
where ["Ref#"] = @PK
fetch next from cursor1 into @PK,@CAReturnCode,@CAErrorCodes
end
close cursor1
deallocate cursor1
를 실행하고있는 GetMatchType 함수의 시작 코드 : 나는 오류를 얻을 것이다
-- Batch submitted through debugger:
SQLQuery14.sql|6|0|C:\Users\b01642a\AppData\Local\Temp\~vs1C8E.sql
CREATE FUNCTION [dbo].[GetMatchType](@CAReturnCode VARCHAR(255), @CAErrorCodes
VARCHAR(255))
RETURNS VARCHAR(16)
BEGIN
DECLARE @MatchType VARCHAR(16);
DECLARE @errorCodes TABLE(Pos INT, Code CHAR(2));
DECLARE @country INT; -- 1 is US, 2 is Canada
DECLARE @numMinorChanges INT;
DECLARE @numMajorChanges INT;
DECLARE @numSingleCodes INT;
DECLARE @returnCode INT;
DECLARE @verified VARCHAR(16);
DECLARE @goodFull VARCHAR(16);
DECLARE @tentativeFull VARCHAR(16);
DECLARE @poorFull VARCHAR(16);
DECLARE @multipleMatch VARCHAR(16);
DECLARE @unmatched VARCHAR(16);
SET @verified = 'Verified';
SET @goodFull = 'Good Full';
SET @tentativeFull = 'Tentative Full';
SET @poorFull = 'Poor Full';
SET @multipleMatch = 'Multiple Match';
SET @unmatched = 'Unmatched';
SET @returnCode = CAST(@CAReturnCode AS INT);
: 메시지 245, 수준 16, 상태 1, 줄 21 varchar 값 ' "1"'을 데이터 형식 int로 변환 할 때 변환하지 못했습니다.
이 오류는 내가 보여 주었다 코드 세그먼트의 마지막 줄에서 발생
SET @returnCode = CAST(@CAReturnCode AS INT);
이 가정으로 동료에 의해 작성되었다 코드가 그를 위해 일했다한다. 일부 오류를 해결해야하지만이 오류는 디버그 할 수 없습니다. 많은 사람들이 dbo.split 함수를 만들 수 있다는 것을 알고 있습니다. 이 옵션이이 시나리오에서 도움이 될지 모르겠습니다. 나는 varchar에 @returnCode를 설정하고 @CAReturnCode에서 CAST를 제거하려고 시도했다. 결과적으로 디버거는 해당 행을 지나치게되지만 나머지 코드와 관련된 문제가 발생합니다. @CAReturnCode를 캐스팅하는 방법에 문제가 있다고 가정하고 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다.
CAST는 ANSI이고 Convert는 SQL에서만 사용됩니다. CONVERT를 사용할 수 있습니까? 조금 더 지능적이어서 변환 방법을 선택하십시오. –
나는 그 총을 줬다. SET @returnCode = CONVERT (INT, @ CAReturnCode); 여전히 동일한 오류가 발생했습니다 – TaylorSmolik