项目中对于mysql数据库自定义函数的应用

该函数满足的一个需求就是,产生一个自增的编码。

首先要创建一个表。来保存你上一个创建字段的信息

DROP TABLE IF EXISTS `dicnotable`;
CREATE TABLE `dicnotable` (
  `ID` int(11) NOT NULL auto_increment,
  `DataBaseName` varchar(20) default NULL,
  `TableName` varchar(20) default NULL,
  `PreFix` varchar(20) default NULL,
  `Total` varchar(20) default NULL,
  `NumLength` varchar(20) default NULL,
  `Info` varchar(200) default NULL,
  `OperID` varchar(20) default NULL,
  `OperName` varchar(20) default NULL,
  `RegisterDate` timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `dicnotable` VALUES ('1', 'boss', 'Person', 'KGEP', '0', '4', '员工编码', 'KGEP9999', '张三, '2010-09-10 14:30:25');

 

每增加一个数据,会在所创建表的total字段上加一,这样就保存了上一个创建的ID,

然后写一个自定义的函数,通过传入表名,然后取出TOTAL,然后再加上自定义的KGEP,

最后得到的自增字段的结果,例如"KGEP0001"

 

DELIMITER $$
drop function if exists `F_GetSysID` $$
CREATE

  FUNCTION `F_GetSysID`( TableName varchar(30))
  RETURNS varchar(30)

  BEGIN

 declare TPreFix varchar(20);
 declare TTotal varchar(20);
        declare TNumLength varchar(20);
      
 declare ZeroString varchar(20);

 set @PreFix='';
 set @Total  ='';
 set @Length=0 ;
 set @TotalLength =0;
        set @ZeroNum=0;
 

   

 select  PreFix into TPreFix from  DicNoTable where  TableName=TableName;

 select Total into TTotal from  DicNoTable where  TableName=TableName;

 select  NumLength into TNumLength from  DicNoTable where  TableName=TableName;

 set @TotalLength=length(TTotal+1);

 if @TotalLength>TNumLength
 then
  set ZeroString='1';
 end if;

 if @TotalLength<=TNumLength
 then
  
  set ZeroString=TTotal+1;
  while   @ZeroNum<TNumLength-@TotalLength do
     
      set ZeroString=concat('0',ZeroString);
      set  @ZeroNum=@ZeroNum+1;
     end while;
  set ZeroString=concat(TPreFix,ZeroString);

  

 

 end if;
      

 

return ZeroString; 
  END$$

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值