• ORACLE 用32進制表示月中的一天


            WHEN 'YMD' THEN
                 v_year := to_char(SYSDATE, 'Y');
                 v_month := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'MM')),32,1);
                 v_day := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'DD')),32,1);
                 v_str := v_year || v_month || v_day;

            WHEN 'YMDD' THEN 
                  v_year := to_char(SYSDATE, 'Y');
                  v_month := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'MM')),16,1);
                  v_day :=to_char(SYSDATE, 'DD');

    FUNCTION FN_CONVERT_DECIMAL_TO_BASE (P_DECIMAL_NUM IN INTEGER, P_DIGITAL_TYPE IN VARCHAR2, P_LEN IN INTEGER) RETURN VARCHAR2

    IS    v_result_str        VARCHAR2 (20)   := '0';

       v_replace_str       VARCHAR2 (8000);  

      v_baseindex         INT             := 1;  

      v_quotient          INT             := p_decimal_num;

       v_digit             INT             := P_LEN - 1;

       v_digit_loop        INT             := 0;  

      v_basenumber        INT             := 0;  

      v_basebeginnumber   INT             := 10;  

      v_decodesql         VARCHAR2 (1000);  

      v_remainder         INT             := 0;

       v_baseloopnumber    INT             := 0;

       v_base_10            VARCHAR2(10) := '0123456789';  

    v_base_16            VARCHAR2(16) := '0123456789ABCDEF';  

    v_base_30            VARCHAR2(30) := '0123456789ABCDEFGHJKLMNPQRTWXY';  

    v_base_32            VARCHAR2(32) := '0123456789ABCDEFGHJKLMNPRSTVWXYZ';

      v_base_33            VARCHAR2(33) := '0123456789ABCDEFGHJKLMNPQRSTVWXYZ';

      v_base_34            VARCHAR2(34) := '0123456789ABCDEFGHJKLMNPQRSTUVWXYZ';  

    v_base_36            VARCHAR2(36) := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

      v_base_code          varchar2(62) := '';

    BEGIN  

    CASE

    P_DIGITAL_TYPE     WHEN '10' THEN      

        v_basenumber :=  LENGTH(v_base_10);   

           v_base_code  := v_base_10;   

      WHEN '16' THEN        

      v_basenumber :=  LENGTH(v_base_16);      

        v_base_code  := v_base_16;  

       WHEN '30' THEN        

      v_basenumber :=  LENGTH(v_base_30);   

           v_base_code  := v_base_30;   

      WHEN '32' THEN        

      v_basenumber :=  LENGTH(v_base_32);  

            v_base_code  := v_base_32;   

      WHEN '33' THEN         

    v_basenumber :=  LENGTH(v_base_33);    

          v_base_code  := v_base_33;  

       WHEN '34' THEN        

      v_basenumber :=  LENGTH(v_base_34);     

         v_base_code  := v_base_34;    

    WHEN '36' THEN        

      v_basenumber :=  LENGTH(v_base_36);  

             v_base_code  := v_base_36;   

    END CASE;      

       v_baseloopnumber := v_basenumber - 10;   

    v_digit_loop := v_digit;   

       IF v_basenumber = 10

    THEN     

    RETURN LPAD(P_DECIMAL_NUM,P_LEN,'0');   

       ELSE    

      v_result_str := LPAD(v_result_str,v_digit,'0');

       END IF;         

       LOOP      

    v_decodesql :=             v_decodesql          || ''''          || v_basebeginnumber          || ''','''          || SUBSTR (v_base_code, v_basebeginnumber + 1, 1)          || ''',';   

        v_basebeginnumber := v_basebeginnumber + 1;    

       v_baseloopnumber := v_baseloopnumber - 1;  

         EXIT WHEN v_baseloopnumber = 0;    END LOOP;

       LOOP    

       v_remainder := MOD (v_quotient, v_basenumber);

          EXECUTE IMMEDIATE    'select Decode('                         || v_remainder                         || ' ,'                         || v_decodesql                         || v_remainder                         || ')    From dual '                    INTO v_replace_str;

          v_result_str :=             SUBSTR (v_result_str, 0, v_digit_loop)          || v_replace_str          || SUBSTR (v_result_str, v_digit_loop + 2, v_digit - v_digit_loop);       v_quotient := FLOOR (v_quotient / v_basenumber);       v_digit_loop := v_digit_loop - 1;       EXIT WHEN v_digit_loop < 0;    END LOOP;

       RETURN v_result_str; END FN_CONVERT_DECIMAL_TO_BASE;

  • 相关阅读:
    2022北航软件研究生入学考试991考试大纲-数据结构与C
    pgsql 学习
    Java开发必须掌握的 20+ 种 Spring 常用注解
    Spring 学习总结
    Spring MVC快速入门教程
    spring boot与spring mvc的区别是什么?
    Java知识体系最强总结(2020版)
    arthas(阿尔萨斯)使用实践----查看慢方法 /方法耗时等
    JVM --------jmap-----查看堆内存信息、生成heap dump 文件(转储堆内存快照到指定文件)
    [JVM】jstat命令详解---JVM的统计监测工具:jstat 堆内存各部分的使用量,以及加载类的数量。
  • 原文地址:https://www.cnblogs.com/bedfly/p/10944297.html
Copyright © 2020-2023  润新知