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

编号是某张表上的我新建的字段,通过一个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个回答

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

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

aline200
aline200 回复butcherking31: 还是得在表中新建一个字段存放该条数据存储的时间。在这个前提下,在你的function中,根据系统当前日期时间查询这一天的数据SUM。如果SUM不为0,则编号SUM+1,否则编号为1
大约 4 年之前 回复
butcherking31
butcherking31 嵌套的if条件是啥?用当前系统时间和什么比较?
大约 4 年之前 回复

应该把这个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);
就可以了!

或者改为 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')

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问