# `Sp_Split_sMpt` (procedure)

> 产品工艺卡拆分


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

## Parameters

| # | Mode | Name | Type |
|---|---|---|---|
| 1 | IN | `sTableName` | `varchar(100)` |
| 2 | IN | `sGuid` | `varchar(100)` |
| 3 | IN | `sFormGuid` | `varchar(100)` |
| 4 | IN | `sLoginId` | `varchar(100)` |
| 5 | IN | `sBrId` | `varchar(100)` |
| 6 | IN | `sSuId` | `varchar(100)` |
| 7 | IN | `iFlag` | `int` |

## Body

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

## Narrative

**Business context:** 生产管理 → 产品工艺卡 (`mftproductmaster` / 印品工艺卡) — splits a multi-line product-craft master into individual one-line masters, one per product. When a craft card carries several products in its slave, the user runs this proc to fan out the master so each product has its own card (a precondition for downstream MRP / 工艺差异 reporting).

**What it does:** Counts `mftproductslave WHERE sParentId=sGuid`; if there are 2+ slaves, opens a cursor over them and for each slave (after `sId`, `sCustomerId`, `sProductId`, `sProductNo`): generates `new_masterId`/`new_slaveId` via `newId()`, skips when an active master for `sProductId` already exists, requests a fresh `sBillNo` via `CALL SP_Sis_GetMaxNo('mftproductmaster', …)`, then `INSERT INTO mftproductmaster (...) SELECT ... FROM mftproductmaster WHERE sId=sGuid` (clones the master with new IDs) and `INSERT INTO mftproductslave (...) SELECT ...` (clones only that one slave row). Does nothing when the master has 0 or 1 slaves.

**Invocation:** Install script: `script/标版/30100101/Sp_Split_sMpt.sql`. No form-master binding, no `gdsmodule` hook, no other DB caller, no xly-src reference. Status: appears orphaned — likely a manual one-off tool invoked by DBA; candidate for maintainer audit before relying on the cloned-row column list (verify all reserved/extension columns are still covered).
