不,TEXT里的"时间"不需要改
ORARichard(没钱的日子好难过) 我等你好久了~呵呵

解决方案 »

  1.   

    to qiaozhiwei(乔) 
    不是得到最大序号,是在以有的记录中按时间排序
      

  2.   

    to GerryYang(轻尘)
    新曾的时候不可能是最大数加1没那么简单,是按部门按时间排一次序,有可能记录插在中间,后面记录的序号要+1
      

  3.   

    to ORARichard(没钱的日子......) 
    我想知道难度系数最大是多少啊?
      

  4.   

    感觉如果把后面那个字段text分开来存放,处理起来要方便得多,效率也会提高很多。
    给个思路:
    procedure before_insert(p_time varchar2,p_text varchar2) is
    v_text varchar2(20):=null;
    begin
      select max(substr(text,-2)) 
       into v_text
      from text 
      where time=p_time
        and substr(text,6,1)= substr(p_text,6,1);
      if v_text is null then
       v_text:=substr(p_text,1,7)||'01';
      else
       v_text:=substr(p_text,1,7)||lpad(to_char(to_number(v_text)+1),2,'0');
      end if;
      --here,insert p_time & v_text into your table
      insert into text values (p_time,v_text);
    end before_insert;procedure before_update(p_time varchar2,p_text varchar2,p_time_new varchar2,p_text_new varchar2) is
    v_text varchar2(20):=null;
    begin
      delete text where time=p_time and text=p_text;
      --here,insert p_time_new & p_text_new your table
      before_insert(p_time_new,p_text_new);
    end before_update;删除的时候可能会打乱以前的序号排列,这个不知道有没有需求对已有的序号重新调整。
    如果有需求的话,可以写一个before_delete逻辑进行重新排序(会比较复杂一点)。
      

  5.   

    用触发器很难做,可以用存储过程,但数据增多,达到一定程度时,这些方法的效率都将变得很低下。
    建议楼主
    1。 将表结构修改,把text字段拆成三个字段(表示序号的字段可以取消)
    2。 在查询表时,将字段组合成“时间-部门-序号”。(序号可以通过分析函数取得)
      

  6.   

    to lynx(lynx) 
    你的过程好象能完成我的逻辑需要,但是现在很奇怪,为什么我执行你这个过程就
    输入 v_text 的值:  2008-a-01
    原值   14:   --here,insert p_time & v_text into your table
    新值   14:   --here,insert p_time 2008-a-01 into your table
    procedure before_insert(p_time varchar2,p_text varchar2) is
    *
    ERROR 位于第 1 行:
    ORA-00900: 无效 SQL 语句
    不是应该要我输入p_time和p_text吗?
      

  7.   

    to ORARichard(没钱的日子......) 
    我现在也很想拆成3段~十分的想
      

  8.   

    to  sxddr(sxddr):
    去掉我过程里面的注释信息就好了。
    就是删掉‘--’所在的行。
      

  9.   

    另外你需要创建这两个过程create or replace procedure...或者创建程序包。
      

  10.   

    to lynx(lynx)
    不行我试了
    SQL> show error;
    PROCEDURE BEFORE_INSERT 出现错误:LINE/COL ERROR
    -------- ----------------------------------
    14/5     PL/SQL: SQL Statement ignored
    14/17    PL/SQL: ORA-00947: 没有足够的值