一个sybase函数(2)
-- 功能描述 : 系统初始化时调用,生成当天的分表后缀。参数:表名
-- 系统初装后通过手工(非定时任务)调用存储过程创建分表
-- 访问的表 :
-- 版本信息 :
-- 修改记录 :
-- <修改人> <修改时间> <描述>
-- 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;