设为首页 加入收藏

TOP

一个sybase函数(2)
2014-11-23 22:31:27 来源: 作者: 【 】 浏览:8
Tags:一个 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;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sybase事务、锁、隔离级别 下一篇Sybase identity 字段

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: