# `Sp_System_ReplaceFieldNew` (procedure)

> 公式语言转换成sql


- **Type:** PROCEDURE
- **Deterministic:** NO
- **SQL data access:** CONTAINS SQL

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sAllGuid` | `longtext` |
| 2 | IN | `sAllTbName` | `longtext` |
| 3 | IN | `sAllType` | `longtext` |
| 4 | IN | `sFormulaGuid` | `varchar(100)` |
| 5 | OUT | `sReturn` | `longtext` |
| 6 | IN | `sTmpValue` | `varchar(100)` |
| 7 | OUT | `sDetail` | `text` |
| 8 | IN | `sLoginId` | `varchar(100)` |
| 9 | IN | `sBrId` | `varchar(100)` |
| 10 | IN | `sSuId` | `varchar(100)` |
| 11 | IN | `sCode` | `int` |

## Body

_Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_System_ReplaceFieldNew`'`._

## Narrative

**Business context:** 生产管理 / 计价 → 公式解析 — formula-language → SQL transpiler (label "公式语言转换成sql"). `ReplaceFieldNew` (no underscore) is the `20220111公式解析实际详情` upgrade variant of `Sp_System_ReplaceField`: same signature, refactored body that wraps the lookup in a labelled `top:` block so the upper layer can `LEAVE top` cleanly on parameter errors. Note the `sCode` parameter is `IN` here (vs `OUT` on the original) — a signature bug that may explain its limited adoption.

**What it does:** Same algorithm as `Sp_System_ReplaceField`: reads `SysSystemSettings` (`CbxLanguage`, `CbxMaterialsUnit`, `CbxMachineUnit`, `NetConversionRate`, `CkxMinColorCalculation`) into a JSON env, loads `gdsformconst` constants in the active language, then expands the formula in `eleformula` keyed by `sFormulaGuid` against the (`sAllGuid`, `sAllTbName`, `sAllType`) triple. Builds dynamic SQL by substituting `#{tag.col}` tokens, runs via PREPARE/EXECUTE, returns the numeric result in `sReturn` and trace in `sDetail`.

**Invocation:** Status: appears orphaned. No `gdsmodule` binding, no form-master, no other-proc match, no xly-src caller beyond `script/标版/upgrade/20220111公式解析实际详情/Sp_System_ReplaceFieldNew.sql` install script. Likely a 2022-Q1 refactor draft that was superseded by `Sp_System_ReplaceField_NEW` (with underscore, from 20220321) and never wired into a live caller. Candidate for cleanup.
