ALTER PROCEDURE usp_XXXXXX (@DateFrom VARCHAR(20),@Dateto VARCHAR(20)) AS DECLARE @pltID VARCHAR(20) --Pallet ID DECLARE @CTNID VARCHAR(30) --Carton ID DECLARE @intError INT DECLARE @strsql NVARCHAR(3000) DECLARE @Cnt INT SET @CTNPERplt=100 SET @Cnt=0 DECLARE plt_cursor CURSOR SCROLL FOR SELECT disTINCT PalletNo FROM **** WITH(NOLOCK) order by palletno OPEN plt_cursor FETCH NEXT FROM plt_cursor INTO @pltID WHILE @@FETCH_STATUS=0 BEGIN SELECT TOP 1 @SNQTYONplt=Qty,@PN=PN,@SO=SO,@shipment=shipment,@mfdate=mfdate,@timein=timein FROM **** WITH(NOLOCK) WHERE **** IF LEN(@SNQTYONplt)=0 OR LEN(@PN)=0 OR LEN(@SO)=0 OR LEN(@shipment)=0 OR LEN(@mfdate)=0 OR LEN(@timein)=0 BEGIN RAISERROR ('Some Column is NULL.',16,1) SET @intError=0 GOTO Err_Handle END BEGIN TRAN SET @strsql='INSERT INTO ****' SET @strsql=@strsql +'****' EXEC @intError=SP_EXECUTEsql @strsql IF @intError <> 0 BEGIN GoTo Err_Handle END SET @CTNSEQ=1 IF UPPER(LEFT(Rtrim(Ltrim(@PN)),2))='9B' BEGIN DECLARE CTN_cursor CURSOR SCROLL FOR SELECT **** FROM **** WHERE trid IN (****) OPEN CTN_cursor FETCH NEXT FROM CTN_cursor INTO @CurCTNID WHILE @@FETCH_STATUS=0 BEGIN BEGIN TRAN SELECT @SNQTYONCTN=count(*) FROM **** WHERE carton=@CurCTNID SET @strsql='INSERT INTO ****' SET @strsql=@strsql +'****' EXEC @intError=SP_EXECUTEsql @strsql IF @intError <> 0 BEGIN GoTo Err_Handle END SET @CTNSEQ=@CTNSEQ+1 END CLOSE SN_cursor DEALLOCATE SN_cursor IF @@trancount<>0 BEGIN COMMIT TRAN END FETCH NEXT FROM CTN_cursor INTO @CurCTNID END CLOSE CTN_cursor DEALLOCATE CTN_cursor GOTO Newplt END Newplt: UPDATE **** SET **** WHERE **** IF @@ERROR<>0 GOTO Err_Handle ELSE IF @@trancount<>0 BEGIN COMMIT TRAN END FETCH NEXT FROM plt_cursor INTO @pltID SET @Cnt=@Cnt+1 END IF @@ERROR<>0 GOTO Err_Handle ELSE IF @@trancount<>0 BEGIN COMMIT TRAN END CLOSE plt_cursor DEALLOCATE plt_cursor RETURN 0 Err_Handle: IF @@trancount<>0 BEGIN ROLLBACK TRAN END RETURN @@ERROR
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。