create or replace function AUTO_YEAR_SEQ_FUNC return varchar2 is l_ret_val VARCHAR2(100); l_existing_max_year NUMBER; l_current_year NUMBER; l_val VARCHAR2(100); l_col_size NUMBER; begin select data_length-5 into l_col_size from user_tab_columns where table_name='TEMP_SEQUENCE' and column_name='SEQ_VAL'; select max(to_number(substr(seq_val,-4))) into l_existing_max_year from temp_sequence; select to_number(to_char(sysdate,'YYYY')) into l_current_year from dual; if l_existing_max_year=l_current_year then select lpad((max(to_number(substr(seq_val,0,instr(seq_val,'/',1)-1)))+1),l_col_size,'0') into l_val from temp_sequence where substr(seq_val,-4)=to_char(l_current_year); else select lpad((max(to_number(substr(seq_val,0,instr(seq_val,'/',1)-1)))+1),l_col_size,'0') into l_val from temp_sequence where substr(seq_val,-4)=to_char(l_current_year); end if; if l_val is null then select lpad(1,l_col_size,'0') into l_val from dual; end if; l_ret_val:=l_val||'/'||l_current_year; return l_ret_val; end;