create or replace function get_projectcode(p_id number) return varchar2
as
--流程控制用来生成调单的流水号,形如20060112-0001
p_str varchar2(2000);
p_out varchar2(2000);
begin
  select to_char(A_STARTDATE,'yyyy')||to_char(A_STARTDATE,'Q') into p_str from project where projectid = p_id;
  begin
    select to_char(max(to_number(projectcode)+1)) into p_out from project where instr(projectcode,p_str) = 1;
  exception
    when OTHERS then
      p_out := null;
  end;
  if p_out is null then
     p_out := p_str ||'0001';
  end if;
  return p_out;
exception
  when OTHERS then
    return null;
end get_projectcode;
是生成调单的流水号,形如20060112"
我现在想形成20060112-0001; 后面的####的转换方式我想这样:我在库里面有个季节 workday   这个字段,当先中第一季度时候形成形如20060112-0001,第二季度时候形成形如20060112-0002 依次类推.我不讳写这程序.求大家帮我该下上面的程序  !!! 求你们了 ,我真的急用.
应该加什么啊? 怎样加? 
上面的只是与A_STARTDATE这个字段有联系 ,我现在是想加一个联系 即workday  季度这字段.在原来的基础上加 ,也就是让那个流水号加长.
比如原来的是2006003 现在要他变为2006003008或者2006003A

解决方案 »

  1.   

    XD,先不要急,慢慢来~~"我现在是想加一个联系 即workday  季度这字段.在原来的基础上加 ,也就是让那个流水号加长.
    比如原来的是2006003 现在要他变为2006003008或者2006003A" 中,"联系 即workday  季度这字段"是什么意思?季度的值到后面怎么变成008或A了呢?应该一年只有四个季度的 ... 能否说明一下?
      

  2.   

    季度是根据月份来的还是自己另外添加的字段直接赋值了?你要说清楚,workday这个字段也是在project里面?
    你这个函数不难,你说清楚,大家很快就能解决。