想你了的他他 发表于 2016-10-24 08:09:19

项目中对于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 ;
页: [1]
查看完整版本: 项目中对于mysql数据库自定义函数的应用