43 lines
914 B
Transact-SQL
43 lines
914 B
Transact-SQL
CREATE OR ALTER PROCEDURE pricing.rebuild_targets
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON; -- auto-rollback on most runtime errors
|
|
|
|
BEGIN TRY
|
|
BEGIN TRAN;
|
|
|
|
DELETE FROM pricing.target_prices;
|
|
|
|
INSERT INTO
|
|
pricing.target_prices
|
|
SELECT
|
|
stlc,
|
|
ds,
|
|
chan,
|
|
tier,
|
|
vol,
|
|
-- Extract lower bound: text between '[' and ','
|
|
TRY_CAST(SUBSTRING(vol, 2, CHARINDEX(',', vol) - 2) AS INT) AS lower_bound,
|
|
-- Extract upper bound: text between ',' and ')'
|
|
CASE
|
|
WHEN RIGHT(vol, 2) = ',)' THEN NULL
|
|
ELSE TRY_CAST(SUBSTRING(vol, CHARINDEX(',', vol) + 1, LEN(vol) - CHARINDEX(',', vol) - 1) AS INT)
|
|
END AS upper_bound,
|
|
price,
|
|
math
|
|
FROM
|
|
usmidsap02.ubm.pricequote.target_prices_view;
|
|
|
|
COMMIT TRAN;
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF XACT_STATE() <> 0
|
|
ROLLBACK TRAN;
|
|
|
|
-- Rethrow original error
|
|
THROW;
|
|
END CATCH;
|
|
END
|