Sp_PurchasePrice.md 1.98 KB

Sp_PurchasePrice (procedure)

  • Type: PROCEDURE
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

# Mode Name Type
1 IN tStartDate datetime
2 IN tEndDate datetime
3 IN sLoginId varchar(100)
4 IN sBrId varchar(100)
5 IN sSuId varchar(100)
6 OUT sReturn varchar(1000)
7 OUT sCode int

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURESpPurchasePrice'._

Narrative

Business context: 采购管理 → 采购分析报表 → 采购主材比例浮动报表 (form 101251240115016204641682560) — paper-material price trend pivot. Returns one row per (sMaterialsId, sParentId) with one dynamically-added column per purchase-order date in the window, holding that day's dMaterialsPrice. Used to watch paper-price fluctuations.

What it does: Builds temp T of viw_purpurchaseorder rows joined to elematerials/sismaterialsclassify, filtered to bCheck=1 AND sMaterialsType='paper' AND tCreateDate ∈ (tStartDate, tEndDate). Distincts (sMaterialsId, sParentId) into temp DT. Then opens nested cursors: outer over materials, inner over the per-date price rows; for each date not yet seen, dynamic ALTER TABLE DT ADD COLUMN 日期MMDD numeric(18,6), then UPDATE DT SET 日期MMDD = price WHERE …. Finally SELECT * FROM DT returns the wide pivot.

Invocation: Bound as the data-source for form 101251240115016204641682560 (采购主材比例浮动报表) under 采购管理 → 采购分析报表 via gdsconfigformmaster.sSqlStr. Loaded when the user opens the report. Install script ships at script/标版/30100101/Sp_PurchasePrice.sql.

Note: dynamic-column pivoting in MySQL is fragile; the proc fails silently if DT is concurrently used or if a date column already exists with a different type. Charting siblings: Sp_PurchasePriceChar, Sp_PurchasePriceChart.