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