이 업데이트는 ID가 동일하므로 실패합니다.@@ 오류 - TSQL에서 처리/평가하는 방법?
하지만 직접적인 오류 메시지가 나타납니다.
PRINT 문 중 하나가 표시되지 않습니다.
@@ ERROR는 어떻게 사용합니까?
SSMS 사용.
이것을 스크립트 또는 쿼리라고 부릅니까?
PRINT 'start';
DECLARE @ErrorVal INT;
UPDATE IndenText SET ID = 7;
SELECT @ErrorVal = @@ERROR;
PRINT @ErrorVal;
IF @ErrorVal <> 0
BEGIN
PRINT N'A error caught.';
END
PRINT 'done';
이것은 또한 ID 열 'ID'를 업데이트 할 수 없습니다 I하기 저
PRINT 'start';
DECLARE @ErrorVal INT;
BEGIN TRY
UPDATE IndenText SET ID = 7;
SELECT @ErrorVal = @@ERROR;
PRINT @ErrorVal;
END TRY
BEGIN CATCH
IF @@ERROR <> 0
BEGIN
PRINT N'A error caught.' + @@ERROR;
END
END CATCH
PRINT 'done';
메시지 8102, 수준 16, 상태 1, 줄 4 에서 작동하지 않습니다.
마틴이 말한 것처럼 컴파일 오류입니다.
컴파일 오류가 아닌 제약 조건을 만들었습니다.
처리 할 @@ ERROR가 있습니다.
PRINT 'start';
DECLARE @ErrorVal INT;
DECLARE @newVal INT;
select @newVal = -1;
BEGIN TRY
update Twaste1 set ID = @newVal ;
PRINT 'End Try';
END TRY
BEGIN CATCH
Select @ErrorVal = @@ERROR;
PRINT 'Begin Catch';
IF @ErrorVal <> 0
BEGIN
PRINT CAST(@ErrorVal as varchar(30));
PRINT N'A error caught.';
END
END CATCH
PRINT 'done'
;
시도 잡기에 대한 답변에 동의하십시오. 배치 또는 범위 중단 오류입니다. AFAIK를 식별 할 수있는 오류 또는 범위를 중단시키는 오류에 대한 특정 논리는 없습니다. [SQL 2000의 오류 처리] (http://www.sommarskog.se/error-handling-I.html#whathappens) –
실제로 편집 후 아는 것은 컴파일 타임 오류라는 것을 알고 있습니다. 이것에 대한 예상 실행 계획을 얻을 수도 없습니다. 컴파일 시간 오류는 주 스크립트를 컴파일 한 후에 문제 문을 컴파일하면 발생합니다. 대개 자식 범위에서 발생하기 때문에 발생하지만 명령문 컴파일이 지연되는 경우에도 발생할 수 있습니다. –
@MartinSmith는 내가 왜 첫 번째 PRINT를 얻지 못하는지 설명합니다. 맞습니다. 실행 계획을 표시하고 예측할 수도 없습니다. 실패 할 것이지만 컴파일 오류가 아닌 것을 찾아야합니다. – Paparazzi