first commit

This commit is contained in:
DATAEXPRESS\4734
2026-02-06 14:44:08 +08:00
commit 3b3e190726
42 changed files with 5385 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
DELIMITER //
CREATE OR REPLACE PROCEDURE zen_import_fields(
IN p_functiontag VARCHAR(100),
IN p_tablename VARCHAR(100)
)
/*
Function : 回傳指定 table 的 schema 並寫入 zen_fields
Description:
Build Date : 2021/08/14
Modified : 2025/08/09 (轉換為 MariaDB 並加入自動寫入功能)
Call Sample:
CALL zen_import_fields('abc01','clinic');
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael
2 Assistant 2025/08/09 轉換為 MariaDB 並加入自動寫入功能
*/
BEGIN
DECLARE v_count INT;
-- 檢查 zen_fields 表中是否已存在該 functiontag 的記錄
SELECT COUNT(*) INTO v_count
FROM zen_fields
WHERE functiontag = p_functiontag;
-- 創建臨時表存儲表結構
DROP TEMPORARY TABLE IF EXISTS temp_schema;
CREATE TEMPORARY TABLE temp_schema (
tablename VARCHAR(60),
fieldname VARCHAR(60),
seqno INT,
fieldobject VARCHAR(20),
fieldlength INT,
fielddefault VARCHAR(200),
fieldchecknull VARCHAR(10),
fieldcn NVARCHAR(60)
);
-- 從 information_schema 讀取表結構
INSERT INTO temp_schema
SELECT
p_tablename AS tablename,
COLUMN_NAME AS fieldname,
ORDINAL_POSITION AS seqno,
DATA_TYPE AS fieldobject,
CHARACTER_MAXIMUM_LENGTH AS fieldlength,
COLUMN_DEFAULT AS fielddefault,
IF(IS_NULLABLE = 'YES', 'Y', 'N') AS fieldchecknull,
COLUMN_COMMENT AS fieldcn
FROM information_schema.COLUMNS
WHERE TABLE_NAME = p_tablename
AND TABLE_SCHEMA = DATABASE()
ORDER BY ORDINAL_POSITION;
-- 處理空值
UPDATE temp_schema SET fieldcn = '' WHERE fieldcn IS NULL;
-- 如果 zen_fields 中沒有該 functiontag 的記錄,則插入新記錄
IF v_count = 0 THEN
INSERT INTO zen_fields (
functiontag, seqno, tablename, fieldname, fieldcn, fielden, fieldlength,
fieldwidth, fieldobject, fielddefault, fieldchecknull, fieldblock,
fieldds, fieldsh, fieldfm, fieldro, cellno, cellx, celly, cellline, datatype
)
SELECT
p_functiontag, seqno, tablename, fieldname, fieldcn, '' AS fielden, fieldlength,
120 AS fieldwidth, fieldobject, fielddefault, fieldchecknull, 0 AS fieldblock,
CASE WHEN seqno <= 6 THEN 'Y' ELSE 'N' END AS fieldds, 'Y' AS fieldsh,
'' AS fieldfm, 'N' AS fieldro, 0 AS cellno, 1 AS cellx, 1 AS celly, 1 AS cellline, fieldobject
FROM temp_schema;
END IF;
-- 返回結果
SELECT 0 AS code, 'ok' AS msg;
SELECT
p_functiontag AS functiontag, seqno, tablename, fieldname, fieldcn, '' AS fielden, fieldlength,
120 AS fieldwidth, fieldobject, fielddefault, fieldchecknull, 0 AS fieldblock,
CASE WHEN seqno <= 6 THEN 'Y' ELSE 'N' END AS fieldds, 'Y' AS fieldsh,
'' AS fieldfm, 'N' AS fieldro, 0 AS cellno, 1 AS cellx, 1 AS celly, 1 AS cellline
FROM temp_schema;
DROP TEMPORARY TABLE IF EXISTS temp_schema;
END //
DELIMITER ;