函数用来生成一个邮政子码c_id(长度大于等于6位不足在前面补字母a)。通过seq生成,条件如下:某省邮政编码表A(一个字段id)id为:123401,123402,123403...函数传入id来判断用相应的seq生成,
123401 - seq_01
123402 - seq_02
123403 - seq_03
........

解决方案 »

  1.   

    函数传入id来判断用相应的seq生成,
    123401 - seq_01
    123402 - seq_02
    123403 - seq_03
    ---------------------
    是这个意思吗?
    1.sequence + 函数传入id后俩位 
    2.长度大于等于6位不足在前面补字母a
      

  2.   

    嗯,已经自己解决了。呵呵
    create or replace function create_cid(yb In Varchar2) return varchar2 is
      Result varchar2(100);
      L_result Number(10);
    Begin
      --根据邮政编码选择相应的seq来生成
      If yb='123401' Then 
      Select seq_1.Nextval Into Result From dual;
      Elsif yb='123402' Then
      Select seq_2.Nextval Into Result From dual;
      Elsif yb='123403' Then
      Select seq_3.Nextval Into Result From dual;
      --判断生成的c_id是否满足6位
      Select length(Result) Into L_result From dual;
      While(L_result<6)
        Loop
         Result := '0'||Result;
        L_result := L_result+1;
        End Loop;
      End If;
      Return Result;
      Dbms_Output.Put_Line('结果为:'||Result);
    end create_cid;我个人是这么写的,有什么不足的请大家指点下。谢谢了。
      

  3.   

    create or replace function create_cid(yb In Varchar2) return varchar2 is
      Result varchar2(100);
      L_result Number(10);
    Begin
      --根据邮政编码选择相应的seq来生成
      If yb='123401' Then 
      Select seq_1.Nextval Into Result From dual;
      Elsif yb='123402' Then
      Select seq_2.Nextval Into Result From dual;
      Elsif yb='123403' Then
      Select seq_3.Nextval Into Result From dual;
      --判断生成的c_id是否满足6位
      Select length(Result) Into L_result From dual;
      While(L_result<6)
        Loop
         Result := 'a'||Result;
        L_result := L_result+1;
        End Loop;
      End If;
      Return Result;
      Dbms_Output.Put_Line('结果为:'||Result);
    end create_cid;
      

  4.   


    Select LPAD(seq_1.Nextval,6,'a') Into Result From dual;