SQL 更新

每次部署時需執行的 SQL(DDL / DML / SP)。共 8 個 migration。

2026-05-24 asset-accexp-workflow-fields
accexpassetvw_assetvw_accexp
ALTER TABLE accexp add  [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE accexp add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE accexp add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE accexp add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE accexp add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE accexp add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE asset add  [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE asset add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE asset add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE asset add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE asset add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE asset add  [已審核] [char](1) NOT NULL DEFAULT '';
go

ALTER VIEW [dbo].[vw_asset]
AS
SELECT          dbo.asset.財產編號, dbo.asset.資產別, dbo.asset.財產名稱, dbo.asset.財產分類碼, dbo.asset.廠商代號,
                            dbo.spdata.廠商簡稱, dbo.asset.廠牌, dbo.asset.規格, dbo.asset.單位, dbo.asset.部門代號, dbo.asset.數量,
                            dbo.asset.取得日期, dbo.asset.取得原價, dbo.asset.改良成本, dbo.asset.預留殘值, dbo.asset.現有狀況碼,
                            dbo.asset.年限, dbo.asset.備註, dbo.asset.資產減科目, dbo.asset.費用科目, dbo.asset.處分日期,
                            dbo.asset.再提年限, dbo.asset.處分金額, dbo.asset.再提殘值, dbo.asset.輸入日期, dbo.asset.輸入人員,
                            dbo.asset.輸入地點, dbo.asset.增刪修, dbo.asset.選擇, dbo.asset.管制碼, dbo.asset.srvdbid, dbo.asset.pkid,
                            dbo.asset.logid, dbo.asset.linkid, dbo.dept.部門簡稱, dbo.asset.保固年限, dbo.asset.原始金額, dbo.asset.附加費用,
                            dbo.vwcmb223_財產分類.field2 AS 財產分類, dbo.vwcmb224_現有狀況.field2 AS 現有狀況, dbo.asset.傳票號碼,
                            dbo.asset.財務單號, dbo.asset.置放地點, dbo.asset.建檔日期, dbo.asset.聯絡單id, dbo.asset.工作流程,
                            dbo.asset.審核人員, dbo.asset.審核日期, dbo.asset.已審核
FROM              dbo.asset LEFT OUTER JOIN
                            dbo.dept ON dbo.asset.部門代號 = dbo.dept.部門代號 LEFT OUTER JOIN
                            dbo.spdata ON dbo.asset.廠商代號 = dbo.spdata.廠商代號 LEFT OUTER JOIN
                            dbo.vwcmb223_財產分類 ON dbo.asset.財產分類碼 = dbo.vwcmb223_財產分類.field1 LEFT OUTER JOIN
                            dbo.vwcmb224_現有狀況 ON dbo.asset.現有狀況碼 = dbo.vwcmb224_現有狀況.field1
GO

ALTER VIEW [dbo].[vw_accexp]
AS
SELECT          dbo.accexp.費用編號, dbo.accexp.費用類別碼, dbo.vwcmb226_費用類別.field2 AS 費用類別, dbo.accexp.費用名稱,
                            dbo.accexp.製單日期, dbo.accexp.廠商代號, dbo.accexp.保單號碼, dbo.accexp.費用起始日, dbo.accexp.費用截止日,
                            dbo.accexp.費用金額, dbo.accexp.資產科目, dbo.accexp.費用科目1, dbo.accexp.費用科目2, dbo.accexp.費用科目3,
                            dbo.accexp.費用科目4, dbo.accexp.百分比1, dbo.accexp.百分比2, dbo.accexp.百分比3, dbo.accexp.百分比4,
                            dbo.accexp.備註, dbo.accexp.輸入日期, dbo.accexp.輸入人員, dbo.accexp.輸入地點, dbo.accexp.增刪修,
                            dbo.accexp.選擇, dbo.accexp.管制碼, dbo.accexp.srvdbid, dbo.accexp.pkid, dbo.accexp.logid, dbo.accexp.linkid,
                            dbo.spdata.廠商簡稱, dbo.accexp.財務單pkid, dbo.accexp.傳票號碼, dbo.accexp.財務單號, dbo.accexp.部門代號,
                            dbo.dept.部門簡稱, dbo.accexp.建檔日期, dbo.accexp.聯絡單id, dbo.accexp.工作流程, dbo.accexp.審核人員,
                            dbo.accexp.審核日期, dbo.accexp.已審核
FROM              dbo.accexp LEFT OUTER JOIN
                            dbo.dept ON dbo.accexp.部門代號 = dbo.dept.部門代號 LEFT OUTER JOIN
                            dbo.spdata ON dbo.accexp.廠商代號 = dbo.spdata.廠商代號 LEFT OUTER JOIN
                            dbo.vwcmb226_費用類別 ON dbo.accexp.費用類別碼 = dbo.vwcmb226_費用類別.field1
GO

EXEC sp_refreshview 'vw_accexp'
EXEC sp_refreshview 'vw_asset'
📖 對應 changelog ↗
2026-05-22 perdata-other-multi-row
-- 1. Contact / Education / WorkExperience:1XX / 3XX / 4XX → 0XXX (補 0 前綴)
UPDATE perdata_d
SET 序號 = '0' + RTRIM(序號)
WHERE LEFT(RTRIM(序號), 1) IN ('1', '3', '4')
  AND LEN(RTRIM(序號)) BETWEEN 2 AND 3;

-- 2. Other 那組:原本固定 序號='2',每個 perdata master 只有一組 6 筆 → 改成 '0201'(合併成第 1 列)
UPDATE perdata_d
SET 序號 = '0201'
WHERE RTRIM(序號) = '2';
GO
📖 對應 changelog ↗
2026-05-22 cheque-system-workflow-fields
bankcheckpaycheckrecbankfcstbankfxrmspbank
update _sheetno set 子表1view ='vw_bankfxrd' where 單據別 = 'BANKFXR'

ALTER TABLE bank add [票據號碼] [nvarchar](40) NOT NULL DEFAULT '';
ALTER TABLE bank add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE bank add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE bank add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE bank add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE bank add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE bank add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE checkpay add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE checkpay add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE checkpay add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE checkpay add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE checkpay add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE checkpay add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE checkrec add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE checkrec add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE checkrec add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE checkrec add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE checkrec add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE checkrec add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE bankfcst add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE bankfcst add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE bankfcst add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE bankfcst add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE bankfcst add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE bankfcst add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE bankfxrm add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE bankfxrm add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE bankfxrm add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE bankfxrm add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE bankfxrm add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE bankfxrm add  [已審核] [char](1) NOT NULL DEFAULT '';

ALTER TABLE spbank add [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE spbank add  [聯絡單id] [int] NOT NULL  DEFAULT 0;
ALTER TABLE spbank add  [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE spbank add  [審核人員] [nvarchar](20) NOT NULL DEFAULT '';
ALTER TABLE spbank add  [審核日期] [varchar](10) NOT NULL DEFAULT '';
ALTER TABLE spbank add  [已審核] [char](1) NOT NULL DEFAULT '';
📖 對應 changelog ↗
2026-05-21 procno-bom-m-cols
procnobom_mvw_wkcentvw_procnovw_bom_m
ALTER TABLE procno ADD [建檔日期] [char](10) NOT NULL DEFAULT '';
ALTER TABLE procno ADD [聯絡單id] [int]      NOT NULL DEFAULT 0;
ALTER TABLE procno ADD [工作流程] [varchar](6) NOT NULL DEFAULT '';
ALTER TABLE procno ADD [已審核]   [char](1)  NOT NULL DEFAULT '';

ALTER TABLE bom_m  ADD [建檔日期] [char](10) NOT NULL DEFAULT '';
GO

ALTER VIEW [dbo].[vw_wkcent]
AS
SELECT  dbo.wkcent.中心群組, dbo.wkcent.中心代號, dbo.wkcent.中心說明, dbo.wkcent.報價費率, dbo.wkcent.產能,
        dbo.wkcent.人工費率, dbo.wkcent.間接費比例, dbo.wkcent.每週天數, dbo.wkcent.部門代號, dbo.wkcent.輸入日期,
        dbo.wkcent.輸入人員, dbo.wkcent.輸入地點, dbo.wkcent.增刪修, dbo.wkcent.選擇, dbo.wkcent.管制碼,
        dbo.wkcent.srvdbid, dbo.wkcent.pkid, dbo.wkcent.logid, dbo.wkcent.linkid,
        ISNULL(dbo.vwseek_grpm1.說明, N'') AS 說明,
        ISNULL(dbo.dept.部門簡稱, N'') AS 部門簡稱,
        dbo.wkcent.聯絡單id, dbo.wkcent.工作流程,
        dbo.wkcent.審核人員, dbo.wkcent.審核日期, dbo.wkcent.已審核, dbo.wkcent.建檔日期
FROM    dbo.wkcent
        LEFT OUTER JOIN dbo.vwseek_grpm1 ON dbo.wkcent.中心群組 = dbo.vwseek_grpm1.群組代號
        LEFT OUTER JOIN dbo.dept         ON dbo.wkcent.部門代號 = dbo.dept.部門代號;
GO

ALTER VIEW [dbo].[vw_procno]
AS
SELECT  dbo.procno.工程代號, dbo.procno.工程簡稱, dbo.procno.報價簡稱, dbo.procno.工程說明, dbo.procno.中心群組,
        dbo.procno.重要度, dbo.procno.重要項目, dbo.procno.圖檔名稱, dbo.procno.製造規格, dbo.procno.檢驗規格,
        dbo.procno.審核人員, dbo.procno.審核日期, dbo.procno.損耗率, dbo.procno.輸入日期, dbo.procno.輸入人員,
        dbo.procno.輸入地點, dbo.procno.增刪修, dbo.procno.選擇, dbo.procno.管制碼,
        dbo.procno.srvdbid, dbo.procno.pkid, dbo.procno.logid, dbo.procno.linkid,
        dbo.vwseek_grpm1.說明,
        dbo.procno.建檔日期, dbo.procno.聯絡單id, dbo.procno.工作流程, dbo.procno.已審核
FROM    dbo.procno
        LEFT OUTER JOIN dbo.vwseek_grpm1 ON dbo.procno.中心群組 = dbo.vwseek_grpm1.群組代號;
GO

ALTER VIEW [dbo].[vw_bom_m]
AS
SELECT  dbo.bom_m.組件編號, dbo.vwseek_invent.品名, dbo.vwseek_invent.品別, dbo.vwseek_invent.停用說明,
        dbo.vwseek_invent.設變編號, dbo.vwseek_invent.設變資料, dbo.bom_m.機種別, dbo.bom_m.銷售地區,
        dbo.bom_m.客戶, dbo.bom_m.生產轉入倉, dbo.bom_m.流程樣板號, dbo.bom_m.聯絡單id, dbo.bom_m.工作流程,
        dbo.bom_m.審核人員, dbo.bom_m.審核日期, dbo.bom_m.已審核, dbo.bom_m.輸入日期, dbo.bom_m.輸入人員,
        dbo.bom_m.輸入地點, dbo.bom_m.增刪修, dbo.bom_m.選擇, dbo.bom_m.管制碼,
        dbo.bom_m.srvdbid, dbo.bom_m.pkid, dbo.bom_m.logid, dbo.bom_m.linkid,
        dbo.vwseek_invent.零件編號, dbo.bom_m.建檔日期
FROM    dbo.bom_m
        LEFT OUTER JOIN dbo.vwseek_invent ON dbo.bom_m.組件編號 = dbo.vwseek_invent.品號;
GO

INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'1     ', N'原任職公司     ', N'C', 30, 0, N'服務機關名稱', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 1, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'2     ', N'原部門       ', N'C', 30, 0, N'部門/職稱', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 2, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'3     ', N'原任職日期     ', N'C', 10, 0, N'到職日', N'9999/99/99', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2019-04-18T17:18:41.633' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 3, 215195, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'4     ', N'原離職日期     ', N'C', 10, 0, N'離職日', N'9999/99/99', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2019-04-18T17:18:41.633' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 4, 215195, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'5     ', N'原待遇       ', N'N', 18, 6, N'薪資(月)', N'999,999,999', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 5, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'6     ', N'原工作內容     ', N'C', 80, 0, N'主要工作', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 6, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'7     ', N'原離職原因     ', N'C', 80, 0, N'離職原因', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_4_B_任職經歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 7, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'8     ', N'學校名稱      ', N'C', 30, 0, N'學校名稱', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 8, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'9     ', N'院系科別      ', N'C', 30, 0, N'院系科別', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 9, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'10    ', N'修業年月起     ', N'C', 7, 0, N'修業起始年月', N'9999/99', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 10, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'11    ', N'修業年月迄     ', N'C', 7, 0, N'修業結束年月', N'9999/99', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 11, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'12    ', N'是否畢業      ', N'C', 1, 0, N'畢/肄', N'Y', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 12, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'13    ', N'學位        ', N'C', 30, 0, N'學位', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_3_B_學歷', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 13, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'14    ', N'眷屬稱謂      ', N'C', 10, 0, N'稱謂', N'XXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 14, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'15    ', N'眷屬姓名      ', N'C', 10, 0, N'姓名', N'XXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 15, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'16    ', N'眷屬出生      ', N'C', 10, 0, N'出生日期', N'9999/99/99', N'CHKDATE', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-09T00:04:00.727' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 16, 64740, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'17    ', N'眷屬職業      ', N'C', 20, 0, N'職業', N'XXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 17, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'18    ', N'緊急聯絡人     ', N'C', 20, 0, N'姓名', N'XXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_1_B_緊急聯絡人', CAST(N'2022-10-13T17:20:14.240' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 18, 526961, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'19    ', N'緊急關係      ', N'C', 10, 0, N'關係', N'XXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_1_B_緊急聯絡人', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 19, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'20    ', N'緊急電話      ', N'C', 20, 0, N'電話', N'XXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_1_B_緊急聯絡人', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 20, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'21    ', N'緊急地址      ', N'C', 80, 0, N'地址', N'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_1_B_緊急聯絡人', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 21, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'48    ', N'身份證號      ', N'C', 14, 0, N'身份證號', N'XXXXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 55, 64734, 3);
GO
INSERT [dbo].[datatpld] ([序號], [欄位], [資料型態], [長度], [小數位數], [標題], [輸入遮罩], [valid方法], [公式], [參照資料], [輸入方式], [輸入內容], [允許輸入], [搜尋方式], [權限], [備註], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'49    ', N'眷屬關係      ', N'C', 10, 0, N'眷屬關係', N'XXXXXXXXXX', N'', N'', N'', N'SQLTEXT   ', N'', N' ', N'', N'', N'P1_2_B_眷屬資料', CAST(N'2014-06-08T23:59:14.177' AS DateTime), N'Gary', N'CMSA-SERVER # cmsa', N' ', N' ', 0, 1, 56, 64734, 3);
GO
INSERT [dbo].[datatplm] ([資料模板號], [說明], [輸入日期], [輸入人員], [輸入地點], [增刪修], [選擇], [管制碼], [srvdbid], [pkid], [logid], [linkid]) VALUES (N'P1    ', N'人事明細資料', CAST(N'2012-10-04T15:32:02.280' AS DateTime), N'令狐沖', N'WXWG101234 # wg101', N' ', N' ', 0, 1, 3, 2109, 0);
GO
📖 對應 changelog ↗
2026-05-09 mailqueue-channel
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = N'qq',
    @recipients   = ...,
    @subject      = @subject,
    @body         = @body,
    @body_format  = N'HTML';

INSERT dbo.twork_skd_mailqueue (收件人, 主旨, 內文, 是否HTML, 來源預存程序, 執行guid)
VALUES (@recipients, @subject, @body, 'Y', OBJECT_NAME(@@PROCID), @execguid);

SELECT 狀態, COUNT(*) FROM dbo.twork_skd_mailqueue GROUP BY 狀態;

-- 死信檢視
SELECT pkid, 主旨, 重試次數, 最後錯誤, 來源預存程序
  FROM dbo.twork_skd_mailqueue
 WHERE 狀態 = 'D'
 ORDER BY 建立時間 DESC;
📖 對應 changelog ↗
2026-05-04 skd-sp-split
TWORK_SKD_GET_PENDING_NOTIFYTWORK_SKD_GET_PENDING_AUTOEXEC
-- 1. 建立待通知 SP
CREATE PROCEDURE [dbo].[TWORK_SKD_GET_PENDING_NOTIFY]
    (@datetime datetime)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT *
    FROM dbo.twork_vw_calendarevent
    WHERE 已審核 = 'Y'
      AND 是否停用 <> 'Y'
      AND 通知 = 'Y'
      AND 通知帳號 <> ''
      AND 已通知 <> 'Y'
      AND @datetime >= 通知時間;
END
GO

-- 2. 建立待自動執行 SP
CREATE PROCEDURE [dbo].[TWORK_SKD_GET_PENDING_AUTOEXEC]
    (@datetime datetime)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT TOP 20 *
    FROM twork_vw_calendarevent
    WHERE 已完成 NOT IN ('Y', 'F')
      AND (已完成 <> 'R' OR 執行開始時間 < DATEADD(MINUTE, -10, @datetime))
      AND 已審核 = 'Y'
      AND 是否停用 <> 'Y'
      AND 是否自動執行 = 'Y'
    ORDER BY 預定時間 ASC;
END
GO
📖 對應 changelog ↗
2026-05-03 eventitem-status-r-completion-time
ALTER PROCEDURE [dbo].[TWORK_SKD_UPDATE_EVENT_STATUS]
       @LP_P1 varchar(1),    -- 1 = 已通知, 2 = 已完成
       @LP_P2 varchar(50),   -- pkid
       @LP_P3 varchar(1),    -- 'R' / 'Y' / 'F' / ''
       @LP_P4 varchar(20)    -- yyyy/MM/dd HH:mm:ss 或 ''
   AS
   BEGIN
       SET NOCOUNT ON;
       DECLARE @StartTime datetime = NULL;
       IF @LP_P4 <> ''
           SET @StartTime = CONVERT(datetime, @LP_P4, 111);

       IF @LP_P1 = '1'
           UPDATE [twork_skd_eventitem]
              SET [已通知] = @LP_P3,
                  [執行開始時間] = CASE WHEN @LP_P4 = '' THEN [執行開始時間] ELSE @StartTime END
            WHERE [pkid] = @LP_P2;
       ELSE IF @LP_P1 = '2'
           UPDATE [twork_skd_eventitem]
              SET [已完成] = @LP_P3,
                  [執行開始時間] = CASE WHEN @LP_P4 = '' THEN [執行開始時間] ELSE @StartTime END,
                  [完成時間] = CASE WHEN @LP_P3 = 'Y' THEN GETDATE() ELSE [完成時間] END,
                  [是否停用] = CASE WHEN @LP_P3 = 'Y' THEN 'Y' ELSE '' END
            WHERE [pkid] = @LP_P2;
   END

UPDATE twork_skd_eventitem SET 已完成 = 'R' WHERE 已完成 = 'X';
📖 對應 changelog ↗
2026-05-03 autopilot-task-unify
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'CloseBook'     WHERE 執行方法 = '關帳';
UPDATE twork_skd_vw_eventitem      SET 執行方法 = 'CloseBook'     WHERE 執行方法 = '關帳';
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'BalanceReport' WHERE 執行方法 = 'CreateBalanceSheet';
UPDATE twork_skd_vw_eventitem      SET 執行方法 = 'BalanceReport' WHERE 執行方法 = 'CreateBalanceSheet';
UPDATE twork_skd_vw_eventtemplated SET 執行方法 = 'PaymntpqQuery' WHERE 執行方法 = 'CreateEmail';
UPDATE twork_skd_vw_eventitem      SET 執行方法 = 'PaymntpqQuery' WHERE 執行方法 = 'CreateEmail';
📖 對應 changelog ↗