이 코드의 문제점은 무엇입니까?COMMIT TRANSACTION 요청에 해당하는 BEGIN TRANSACTION이 없습니다.
절차에서 예외가 발생하면 The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
이 오류가 발생합니다. 어떻게 해결할 수 있습니까?
BEGIN
BEGIN TRANSACTION
DECLARE
@Id bigint
,@Month nvarchar(100)
,@Year nvarchar(100)
,@CountryofExport nvarchar(100)
,@CountryofOrigin nvarchar(100)
,@HSCode nvarchar(100)
,@Unit nvarchar(100)
,@Quantity nvarchar(100)
,@CustomValue nvarchar(255)
,@Type nvarchar(100)
,@TypeBit bit
,@CountryofExportID int
,@CountryofOriginID int
,@MeasurementId int
,@Remarks nvarchar(500)
,@CommodityId int
,@SDate nvarchar(100)
,@SameRec int
,@counts int
DECLARE @Cursor_TradeFlow CURSOR
SET @Cursor_TradeFlow = CURSOR FOR
SELECT [Id],[Months],[Years],[CountryofExport],[CountryofOrigin],[HSCode],[Quantity],[Unit],[CustomValue],[Type] FROM [Temp_Trading]
OPEN @Cursor_TradeFlow
FETCH NEXT FROM @Cursor_TradeFlow INTO @Id, @Month, @Year, @CountryofExport, @CountryofOrigin, @HSCode,@Quantity, @Unit, @CustomValue, @Type
WHILE @@FETCH_STATUS = 0
BEGIN
Set @Remarks='';
Declare @EICountry varchar(100),
@Checkbit bit,
@CheckYearIsNumeric bit,
@CheckMonthIsNumeric bit
BEGIN TRY
SET @CheckMonthIsNumeric= convert(INT, @Month);
END TRY
BEGIN CATCH
begin
set @Checkbit=1;
set @Remarks = @Remarks + 'Invalid Month'
set @CheckMonthIsNumeric=1
end
END CATCH
BEGIN TRY
set @CheckYearIsNumeric= convert(INT, @Year);
END TRY
BEGIN CATCH
SET @CheckYearIsNumeric= 1;
set @Checkbit=1;
set @Remarks = @Remarks + 'Invalid Year'
END CATCH
Set @SameRec = (Select COUNT(*) From TradeFlow Where int_Month = @CheckMonthIsNumeric and int_Year = @CheckYearIsNumeric
and int_OriginLocationId = @CountryofExportID and int_DestinationLocationId = @CountryofOriginID and int_CommodityId = @CommodityId
and int_MeasurementId = @MeasurementId)
IF @@ERROR <> 0
BEGIN
ROLLBACK
END
FETCH NEXT FROM @Cursor_TradeFlow INTO @Id, @Month, @Year, @CountryofExport, @CountryofOrigin, @HSCode,@Quantity, @Unit, @CustomValue, @Type
END
CLOSE @Cursor_TradeFlow
DEALLOCATE @Cursor_TradeFlow
COMMIT
END
모든 관련 코드를 제시해주십시오/롤백 TRANSACTION COMMIT . 코드에'COMMIT TRANSACTION'이 없습니다. –
이미 여러 곳에서 Try/Catch를 사용하고 있습니다. @@ Error 대신에 사용하지 않는 이유가 있습니까? 예를 들어 현재 @@ 오류 검사 대신 전체 루프를 둘러싼 글로벌 시도/catch는 문제에 대한 단순한 해결책이 될 수 있습니다. 예기치 않은 문제로 모든 것을 되돌릴 수 있습니다. – Tao
왜 커서를 사용하고 있습니까? – HLGEM