怎么让一个自动生成的编号第二天重新从1开始

butcherking31 2016-06-02 10:28:21
现在有一个存储过程,自动生成编号,怎么让他第二天重新从1开始?
...全文
1064 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
butcherking31 2016-06-02
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:

-- 不用写存储过程 ,或者你改成存储过程也可以的

SQL> 
SQL> create table test(id int, create_date date);
Table created
SQL> insert into test
  2  select nvl(max(id),0) + 1 ,sysdate from test where create_date > trunc(sysdate);
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> select * from test ;
                                     ID CREATE_DATE
--------------------------------------- -----------
                                      1 2016-06-02
                                      2 2016-06-02
                                      3 2016-06-02
                                      4 2016-06-02
SQL> drop table test purge ;
Table dropped

SQL> 

额...我再把我的问题说得具体一点吧....这个字段编号是某张表上的我新建的字段,通过一个function获取,这个function已经可以让这个字段每次+1,但是怎么能让这个编号每天都重新从1开始,下面是获取编号的function

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;

卖水果的net 2016-06-02
  • 打赏
  • 举报
回复

-- 不用写存储过程 ,或者你改成存储过程也可以的

SQL> 
SQL> create table test(id int, create_date date);
Table created
SQL> insert into test
  2  select nvl(max(id),0) + 1 ,sysdate from test where create_date > trunc(sysdate);
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> select * from test ;
                                     ID CREATE_DATE
--------------------------------------- -----------
                                      1 2016-06-02
                                      2 2016-06-02
                                      3 2016-06-02
                                      4 2016-06-02
SQL> drop table test purge ;
Table dropped

SQL> 

butcherking31 2016-06-02
  • 打赏
  • 举报
回复
引用 4 楼 wmxcn2000 的回复:
最新的编号,要有一个地方记录下来,不然没有办法向上增加的;
这个编号是表里面的一个字段,通过一个存储过程生成,现在可以每次加1,但是想让他每天都从1开始
卖水果的net 2016-06-02
  • 打赏
  • 举报
回复
最新的编号,要有一个地方记录下来,不然没有办法向上增加的;
ghx287524027 2016-06-02
  • 打赏
  • 举报
回复
引用 2 楼 butcherking31 的回复:
[quote=引用 楼主 butcherking31 的回复:] 现在有一个存储过程,自动生成编号,怎么让他第二天重新从1开始?
新人,这个对存储过程也可以生效吗?[/quote] 可以啊
butcherking31 2016-06-02
  • 打赏
  • 举报
回复
引用 楼主 butcherking31 的回复:
现在有一个存储过程,自动生成编号,怎么让他第二天重新从1开始?
新人,这个对存储过程也可以生效吗?
ghx287524027 2016-06-02
  • 打赏
  • 举报
回复
卖水果的net 2016-06-02
  • 打赏
  • 举报
回复
你要把新号生成了,再写回表,才能取到更新的号;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧