-- 功能描述 : 系統初始化時調用,生成當天的分表後綴。參數:表名
-- 系統初裝後通過手工(非定時任務)調用存儲過程創建分表
-- 訪問的表 :
-- 版本信息 :
-- 修改記錄 :
-- <修改人> <修改時間> <描述>
-- KF37616 2011-02-18 新建
--**********************************************************************
CREATE OR REPLACE FUNCTION fn_hw_PreStatGetTableIdx_Init(
IN p_TableName VARCHAR(60)
)
RETURNS VARCHAR(10)
BEGIN
--0、變量定義
DECLARE v_sReturn VARCHAR(10); --返回值:分表後綴
DECLARE v_iSub_Flag INT; --分表標識(0:不分表,1:分表)
DECLARE v_iSub_Type INT; --分表方式(0:按天,1:按月,2:按周,...)
DECLARE v_icount INT;
DECLARE v_iCurrent INT;
--1、初始化變量
SET v_sReturn = ;
SET v_iSub_Flag = 0;
SET v_iSub_Type = 0;
SET v_icount = 0;
SET v_iCurrent = 0;
--2、判斷傳入的表名稱是否在配置表中配置
SELECT COUNT(*) INTO v_icount FROM cfg_sub_table_para WHERE sTableName = p_TableName;
IF ( v_icount <> 0 ) THEN
SELECT iFlag,iType INTO v_iSub_Flag,v_iSub_Type FROM cfg_sub_table_para
WHERE sTableName = p_TableName;
ELSE
--如果沒有配置默認為不分表
SET v_sReturn = 0;
RETURN v_sReturn;
END IF;
--3、當不分表的時候,直接返回0,如果分表,返回初始化當天的表
IF ( v_iSub_Flag = 0 ) THEN
SET v_sReturn = 0;
ELSE
CASE v_iSub_Type
WHEN 0 THEN --按天分表
SET v_iCurrent = DATEDIFF(DAY,1970-01-01 00:00:00,GETDATE());
SET v_sReturn = CAST(v_iCurrent AS VARCHAR(128));
ELSE
--不在取值范圍內默認為不分表
SET v_sReturn = 0;
END CASE;
END IF;
RETURN (v_sReturn);
END;