butcherking31
butcherking31
采纳率0%
2016-06-02 03:41 阅读 3.0k

让编号每天都从1开始生成

5

编号是某张表上的我新建的字段,通过一个function获取,这个function已经可以让这个字段每次+1,但是怎么能让这个编号每天都重新从1开始,下面是获取编号的function
SQL code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

CREATE OR REPLACE FUNCTION Fn_GETBH
(
var_orgcode varchar2,
--var_deptID varchar2,

var_DEID varchar2

)
RETURN integer
IS

int_bh integer ;
tablename varchar2(100);
BEGIN
if var_DEID='test' THEN
select max(bh)as bh into int_bh from test t where t.orgcode=var_orgcode and TRUNC(SYSDATE,'YEAR')=TRUNC(T.CREATEDATE,'YEAR');

   end if;
 if int_bh is null  THEN
     int_bh:=0;
   end if;
   int_bh:=int_bh+1;

return int_bh;

End Fn_GETBH;

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • kaka20099527 mazi2004 2016-06-02 05:40

    需要一个表字段保存当天日期yyyyMMdd,每次取之前先获取当天日期yyyyMMdd并和保存日期比较,如果不相同则需要做两件事:1.保存该日期 2.将int_bh赋值为0

    点赞 评论 复制链接分享
  • aline200 aline200 2016-06-02 06:57

    在方法里头直接获取到系统当前时间,编号赋值时再嵌套一个 if 试试

    点赞 评论 复制链接分享
  • jianzuixian prg_jzx 2016-06-03 01:17

    应该把这个select max(bh)as bh into int_bh from test t where t.orgcode=var_orgcode and TRUNC(SYSDATE,'YEAR')=TRUNC(T.CREATEDATE,'YEAR');
    改为 select max(bh)as bh into int_bh from test t where t.orgcode=var_orgcode and TRUNC(SYSDATE)=TRUNC(T.CREATEDATE);
    就可以了!

    点赞 评论 复制链接分享
  • jianzuixian prg_jzx 2016-06-03 01:22

    或者改为 select max(bh)as bh into int_bh from test t where t.orgcode=var_orgcode and TRUNC(SYSDATE,'dd')=TRUNC(T.CREATEDATE,'dd');
    也可以,因为TRUNC(SYSDATE) 默认就是 TRUNC(SYSDATE,'dd')

    点赞 评论 复制链接分享

相关推荐