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

76 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 のみが期間判定に使われる設計