DELIMITER //

CREATE OR REPLACE PROCEDURE zen_read_schema (
  IN p_tablename VARCHAR(100)
)
/*
  功能：讀取資料表結構資訊
  範例：CALL zen_read_schema('pmsproject_class');
*/
BEGIN
  SELECT 
    t.TABLE_NAME AS '表格名稱',
    c.COLUMN_NAME AS '欄位名稱',
    c.ORDINAL_POSITION AS '序號',
    c.DATA_TYPE AS '資料型別',
    IFNULL(c.CHARACTER_MAXIMUM_LENGTH, '') AS '長度',
    '' AS '預設值',
    CASE WHEN c.IS_NULLABLE = 'YES' THEN 'N' ELSE 'Y' END AS '是否允許空值',
    IFNULL(
      (SELECT COLUMN_COMMENT 
       FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE TABLE_SCHEMA = t.TABLE_SCHEMA 
       AND TABLE_NAME = t.TABLE_NAME 
       AND COLUMN_NAME = c.COLUMN_NAME),
      ''
    ) AS '欄位描述'
  FROM 
    INFORMATION_SCHEMA.TABLES t
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME AND t.TABLE_SCHEMA = c.TABLE_SCHEMA
  WHERE 
    t.TABLE_TYPE = 'BASE TABLE' 
    AND t.TABLE_NAME = p_tablename
  ORDER BY 
    t.TABLE_NAME, 
    c.ORDINAL_POSITION;
END//

DELIMITER ;