oralce 下面函数名称任意,
实现如下功能
  输入如下参数
   shiper_code ,aera_code
 调用函数返回一字符串如下行式
shiper_code ,aera_code 加系统时间(YYYYMMDD)再加6位数字例如
  20080801  第一次掉用后(america,siu) 返回结果 为 americasiu20080801000001
   20080801  第二次掉用后(america,siu) 返回结果 为  americasiu20080801000002
   20080802  第一次掉用后(america,siu) 返回结果 为 americasiu20080802000001
  20080803  第一次掉用后(america,siu) 返回结果 为 americasiu20080803000001
请问这个函数该怎么设计,用sql语句实现

解决方案 »

  1.   


    是这个意思?
    SQL> SELECT TT.*,
      2         SHIPER_CODE || AREA_CODE || TO_CHAR(MY_DATE, 'YYYYMMDD') ||
      3         LPAD((ROW_NUMBER() OVER(PARTITION BY SHIPER_CODE,
      4                                 AREA_CODE,
      5                                 MY_DATE ORDER BY MY_DATE)),
      6              6,
      7              '0') "RETURN_VALLUE"
      8    FROM TABLE_NAME TT;SHIPER_CODE AREA_CODE MY_DATE     RETURN_VALLUE
    ----------- --------- ----------- -----------------------------
    AMERICA     SIU       8/1/2008    AMERICASIU20080801000001
    AMERICA     SIU       8/1/2008    AMERICASIU20080801000002
    AMERICA     SIU       8/2/2008    AMERICASIU20080802000001
    AMERICA     SIU       8/3/2008    AMERICASIU20080803000001
    CHINA       HENGYANG  8/1/2008    CHINAHENGYANG20080801000001
    CHINA       HENGYANG  8/1/2008    CHINAHENGYANG200808010000026 rows selectedSQL> 
      

  2.   

    你这先要建成做个存储过程,重建成个序列
    然后建个JOB,每天定时重建
    然后函数调用调用序列
      

  3.   

    还有种办法,就是设计张表,每调用次函数,就去UPDATE一下,这样不断就能取到最大值,就是要考虑并发问题