首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

新部件編碼生成流程設計詳解:規則、存儲過程邏輯與參數獲取

     編輯:Oracle 教學

新部件編碼生成流程設計詳解:規則、存儲過程邏輯與參數獲取

本文詳細記錄 GIS 系統中新部件編碼的自動生成規則、參數來源、流程圖邏輯及存儲過程 dlsys.fcGetPhyLayerNewObjCode 的分步實現,為同類編碼規則設計提供參考範本。

一、 業務背景與區域編碼體系

區域層級代號數字代碼
區district2
街道street3
社區community4
單元網格cell5

核心表:tcregion (基礎區域表) → 視圖 vcregion (展示街道/社區/網格層級代碼關係)。

二、 編碼生成所需兩大入參

  1. subTypeID:部件子類型 ID,來源於前端選擇的部件圖層屬性。
    [QDM (6位)] + [Unicode (4位)] + [MaxCode +/- 1 (流水號)]
    示例: 410302  +  5140   +  00001  =  410302514000001
    • QDM:從 vcregion 以 cellName 查詢對應的區代碼,取後 6 位;查無則用 cellName 前 6 位兜底。
    • Unicode:從部件屬性表以 subTypeID 查詢 unique_code,取後 4 位。
    • MaxCode +/- 1:在目標物理圖層表中查找當前最大編碼,按配置的遞增/遞減規則 +1 或 -1。

    四、 存儲過程核心邏輯分步解析 (dlsys.fcGetPhyLayerNewObjCode)

    步驟 1:獲取 QDM (區域代碼後 6 位)

    SELECT unique_code, phy_layer_name
      INTO v_unicode, v_layer_name
      FROM dlgis.phy_layer_attr
     WHERE subtype_id = p_subtype_id;  -- 假設查到 unique_code=...5140
    v_unicode := SUBSTR(v_unicode, -4); -- 取後 4 位 → '5140'

    步驟 3:獲取 MaxCode (目標圖層表中現有最大編碼)

    SELECT sort_rule INTO v_sort_rule
    FROM dlgis.phy_layer_sort_config
    WHERE layer_name = v_layer_name;
    -- v_sort_rule: 'ASC' (遞增+1) 或 'DESC' (遞減-1)

    步驟 5:生成新編碼並返回

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved