Files
updsv7-rag/標準版/給与システム/entity/xcsql_[コントロール]SQL文テーブル.md
T
guanxiangwei 060b7bf1fa init
2026-08-27 11:27:47 +09:00

4.9 KiB
Raw Blame History

xcsql [�ントロール]SQL文テーブル — xlsx vs DB 対照

  • xlsx: /mnt/d/25.テーブル一覧/10.テーブル定義/30.給与/xcsql.xlsx
  • DB: updsv7_opho_ci (192.168.1.72:5432) / public.xcsql
  • 改訂履歴: 7.0.0 新規作成 (2023-10-04 NSC) — 改訂なし

1. 全体対数

区分 項目 値
列数 xlsx 13
列数 DB 13
列差 DB のみ 0
列差 xlsx のみ 0
行数 DB 約871行
表サイズ DB 1120 kB
インデックス xcsql_idx UNIQUE (ccompkb, cqtaikeikb, dstart, cpgmid, nrunseq)

2. 業務身份

  • UPDS-V7 の「SQL 集中管理表」 — 各機能プログラムが必要な SQL(UPDATE/INSERT/DELETE/SELECT)をプログラム内にハードコードせず、本表に格納
  • プログラム実行時、cpgmid + nrunseq で該当 SQL を本表から取得 → 即時実行
  • 用途:
    • SQL の変更時にプログラム再コンパイル不要(表データ更新で対応)
    • 業務ロジックを「コードに書く」「DB に書く」のハイブリッドパターン
    • クライアントごとのカスタマイズ容易(同じ cpgmid に対し適用期間 dstart〜dend で複数バージョン保持)

3. カラム対照(13 列 全一致)

No カラム名 カラムID xlsx型 xlsx桁 xlsx制約 DB型 DB桁 NOT NULL xlsx idx 用途
1 会社区分 ccompkb varchar 2 N varchar 2 YES 1 PK候補
2 給与体系区分 cqtaikeikb varchar 2 N varchar 2 YES 3 PK候補
3 適用開始年月 dstart date - N date - YES 4 PK候補 (YYYY/MM/01固定)
4 適用終了年月 dend date - N date - YES - 末日固定(無期限は 2222/12/31)
5 更新ユーザ)端末ID cmnclient varchar 10 - varchar 10 NO - 更新ログ
6 更新ユーザ)会社区分 cmncomp varchar 2 - varchar 2 NO - 更新ログ
7 更新ユーザ)ユーザID cmnuser varchar 10 - varchar 10 NO - 更新ログ
8 更新�ーザ)更新日時 dmndate timestamp - - timestamp - NO - 更新ログ
9 プログラム識別 cpgmid varchar 20 N varchar 20 YES 2 PK候補 (例: DJNC1020, UMMN0120, UCLR1000 等)
10 実行SEQ nrunseq numeric 4 N numeric 4,0 YES 5 PK候補 (同一プログラム内の実行順序)
11 SELECT文区分 nselect numeric 1 N numeric 1,0 YES - 1=SELECT文(参照用)、0=それ以外(更新系)
12 SQL文 csql varchar 4000 - varchar 4000 NO - SQL本体(MyBatis 動的バインド可)
13 備考 cbikou varchar 40 - varchar 40 NO - コメント用

4. 主キー

  • UNIQUE INDEX: xcsql_idx (ccompkb, cqtaikeikb, dstart, cpgmid, nrunseq) — 5 列複合キー
  • xlsx H列「インデックス」記載: ccompkb=1, cqtaikeikb=3, dstart=4, cpgmid=2, nrunseq=5, dend 空欄 → 5 列複合 UNIQUE として存在
  • dend は NOT NULL だが PK 表記なし → 業務上 dend は「有効期限終端」で PK 判定に使われない(dstart のみ期間判定)

5. データ例(先頭 5 件)

cpgmid nrunseq nselect csql 抜粋 cbikou
DJNC1020|1 2620 0 UPDATE DKIDO_DUMMY A SET CHECK_FLG = '8' WHERE A.WK_CLIENT_ID = #{XsClnt端末ID} 異動入力論理チェック 常勤の厚友会加入脱退
DJNC1020|1 2630 0 INSERT INTO DK_RONRI_CHK SELECT ... 異動入力論理チェック 再任用以外の令和会加入脱退
UMMN0120 20 0 DELETE FROM UWLOADBANK WHERE CCOMPKB in ('00',#{Gs会社ID}) 各種初期化処理
UMMN0120 30 0 DELETE FROM UWBANKSAI WHERE ... 各種初期化処理
UMMN0120 40 0 DELETE FROM UWFURIKOMISAI WHERE ... 各種初期化処理

6. 観察

  • csql に MyBatis 動的バインド #{Gs会社ID} #{XsClnt端末ID} が含まれる → xcsql から読んだ SQL をさらに MyBatis が評価する二段構えの仕組み
  • dstart='1899-12-31' / dend='2222-12-30' は「全期間有効」セマフォック値(UPDS-V7 全体標準)
  • cpgmid に | 区切りでバージョン管理する場合あり(例: DJNC1020|1 = DJNC1020 のバージョン 1)
  • nrunseq は同一 cpgmid 内で SQL の実行順序を保証(例: 10, 20, 30, ... のように 10 刻み)
  • nselect 区分により、参照系 SQL(一覧検索等)と更新系 SQL(INSERT/UPDATE/DELETE)を判別

7. 結論

  • 列定義(列名・型・桁・NOT NULL)は xlsx と DB で完全一致
  • PK 表記ルール: xlsx H列「インデックス」で複合 UNIQUE を 5 列複合と表現
  • 致命的な不一致なし
  • 要確認: xlsx F列「N」6列のうち dend は PK 表記なし → 業務上 dstart のみが期間判定に使われる設計