Orcale Function Sequence.
1 Create Or Replace Function F_Get_Sequence(As_Companyno In Varchar2, 2 As_Tablename In Varchar2, 3 As_Prefix In Varchar2, 4 As_Number In Number := 6) 5 Return Varchar2 Is 6 As_Seqvalue Varchar(32); 7 As_SeqvalueTemp Varchar(32); 8 As_Tablenameupper Varchar2(64); 9 As_Count Number(6); 10 As_Sql Varchar2(500); 11 As_Length Number(6); 12 Begin 13 If As_Number Is Null Then 14 As_Length := 6; 15 Else 16 As_Length := As_Number; 17 End If; 18 As_Tablenameupper := Upper(As_Tablename); 19 Select Count(1) 20 Into As_Count 21 From Basic_Sequence t 22 Where t.Companyno = As_Companyno 23 And t.Tablename = As_Tablenameupper; 24 If As_Count = 0 Then 25 Begin 26 As_Sql := 'Insert Into Basic_Sequence(Companyno,Tablename, Currentvalue) Values (:Companyno,:Tablename, 0)'; 27 Execute Immediate As_Sql 28 Using As_Companyno, As_Tablenameupper; 29 Commit; 30 End; 31 End If; 32 33 Update Basic_Sequence t 34 Set t.Currentvalue = t.Currentvalue + 1 35 Where t.Companyno = As_Companyno 36 And t.Tablename = As_Tablenameupper; 37 Select Currentvalue 38 Into As_Seqvalue 39 From Basic_Sequence t 40 Where t.Companyno = As_Companyno 41 And t.Tablename = As_Tablenameupper; 42 IF Length(As_Seqvalue) < As_Length Then 43 As_Length = Length(As_Seqvalue); 44 End If; 45 As_Seqvalue := As_Prefix || To_Char(Sysdate, 'yyyymmdd') || 46 Lpad(Substr(As_Seqvalue, -As_Length), As_Length, '0'); 47 48 Return(As_Seqvalue); 49 End f_Get_Sequence;