additional transaction wrapping and consolidated proc to sync tables
This commit is contained in:
parent
9dd85505ea
commit
326784e18c
@ -2,6 +2,10 @@ CREATE OR ALTER PROCEDURE pricing.rebuild_pricelist
|
|||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON;
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON; -- auto-rollback on most errors
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
BEGIN TRAN;
|
||||||
|
|
||||||
DROP TABLE pricing.pricelist_ranged;
|
DROP TABLE pricing.pricelist_ranged;
|
||||||
|
|
||||||
@ -202,4 +206,21 @@ FROM
|
|||||||
ranged;
|
ranged;
|
||||||
|
|
||||||
--CREATE INDEX pricelist_ranged_idx ON pricing.pricelist_ranged(jcpart, jcplcd, vb_from, vb_to);
|
--CREATE INDEX pricelist_ranged_idx ON pricing.pricelist_ranged(jcpart, jcplcd, vb_from, vb_to);
|
||||||
|
|
||||||
|
COMMIT TRAN;
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
-- Ensure transaction is rolled back
|
||||||
|
IF XACT_STATE() <> 0
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK TRAN;
|
||||||
|
END
|
||||||
|
|
||||||
|
IF OBJECT_ID('tempdb..#anchor') IS NOT NULL DROP TABLE #anchor;
|
||||||
|
IF OBJECT_ID('tempdb..#g') IS NOT NULL DROP TABLE #g;
|
||||||
|
IF OBJECT_ID('tempdb..#uom') IS NOT NULL DROP TABLE #uom;
|
||||||
|
|
||||||
|
-- Re-throw original error
|
||||||
|
THROW;
|
||||||
|
END CATCH;
|
||||||
END;
|
END;
|
@ -2,6 +2,10 @@ CREATE OR ALTER PROCEDURE pricing.rebuild_targets
|
|||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON;
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON; -- auto-rollback on most runtime errors
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
BEGIN TRAN;
|
||||||
|
|
||||||
DELETE FROM pricing.target_prices;
|
DELETE FROM pricing.target_prices;
|
||||||
|
|
||||||
@ -25,4 +29,14 @@ SELECT
|
|||||||
FROM
|
FROM
|
||||||
usmidsap02.ubm.pricequote.target_prices_view;
|
usmidsap02.ubm.pricequote.target_prices_view;
|
||||||
|
|
||||||
END;
|
COMMIT TRAN;
|
||||||
|
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH
|
||||||
|
IF XACT_STATE() <> 0
|
||||||
|
ROLLBACK TRAN;
|
||||||
|
|
||||||
|
-- Rethrow original error
|
||||||
|
THROW;
|
||||||
|
END CATCH;
|
||||||
|
END
|
||||||
|
68
rebuild/sync_external.ms.sql
Normal file
68
rebuild/sync_external.ms.sql
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
CREATE OR ALTER PROCEDURE pricing.sync_external
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
SET XACT_ABORT ON; -- causes runtime errors to auto-rollback
|
||||||
|
|
||||||
|
BEGIN TRY
|
||||||
|
|
||||||
|
BEGIN TRAN;
|
||||||
|
-- Refresh pricing.ffcret
|
||||||
|
TRUNCATE TABLE pricing.ffcret;
|
||||||
|
INSERT INTO pricing.ffcret
|
||||||
|
SELECT *
|
||||||
|
FROM fanalysis.rlarp.ffcret;
|
||||||
|
|
||||||
|
-- Refresh pricing.ffterr
|
||||||
|
TRUNCATE TABLE pricing.ffterr;
|
||||||
|
INSERT INTO pricing.ffterr
|
||||||
|
SELECT *
|
||||||
|
FROM fanalysis.rlarp.ffterr;
|
||||||
|
|
||||||
|
-- Refresh pricing.gld
|
||||||
|
TRUNCATE TABLE pricing.gld;
|
||||||
|
INSERT INTO pricing.gld
|
||||||
|
SELECT *
|
||||||
|
FROM fanalysis.rlarp.gld;
|
||||||
|
|
||||||
|
-- Refresh pricing.qrh
|
||||||
|
TRUNCATE TABLE pricing.qrh;
|
||||||
|
INSERT INTO pricing.qrh
|
||||||
|
SELECT *
|
||||||
|
FROM fanalysis.rlarp.qrh;
|
||||||
|
|
||||||
|
-- Refresh pricing.sach
|
||||||
|
TRUNCATE TABLE pricing.sach;
|
||||||
|
INSERT INTO pricing.sach
|
||||||
|
SELECT *
|
||||||
|
FROM fanalysis.lgdat.sach;
|
||||||
|
|
||||||
|
--rebuild last price
|
||||||
|
|
||||||
|
COMMIT TRAN;
|
||||||
|
|
||||||
|
-- rebuild last price
|
||||||
|
EXEC pricing.rebuild_lastprice;
|
||||||
|
|
||||||
|
-- rebuild ranged price list
|
||||||
|
EXEC pricing.rebuild_pricelist;
|
||||||
|
|
||||||
|
-- rebuild target prices
|
||||||
|
EXEC pricing.rebuild_targets;
|
||||||
|
|
||||||
|
END TRY
|
||||||
|
|
||||||
|
BEGIN CATCH
|
||||||
|
-- Rollback if any error
|
||||||
|
IF XACT_STATE() <> 0
|
||||||
|
ROLLBACK TRAN;
|
||||||
|
|
||||||
|
-- rethrow original error with context
|
||||||
|
DECLARE @ErrMsg NVARCHAR(4000) = ERROR_MESSAGE();
|
||||||
|
DECLARE @ErrSec NVARCHAR(200) = ERROR_SEVERITY();
|
||||||
|
DECLARE @ErrState INT = ERROR_STATE();
|
||||||
|
RAISERROR('refresh_pricing_tables failed: %s', 16, 1, @ErrMsg);
|
||||||
|
THROW; -- rethrow original error for callers to handle
|
||||||
|
END CATCH;
|
||||||
|
|
||||||
|
END
|
Loading…
Reference in New Issue
Block a user