한자를 병음으로 바꾸다

102035 단어 한자.
CREATE OR REPLACE FUNCTION GetHzPYCAP(p_String varchar2) --?????

 RETURN VARCHAR2 IS

--declare

 --p_String varchar2(200) := '???????';

 v_char varchar2(2);  --????

 n_loop number;    --??

 n_len number;     --????

 n_ascii number;   --??ASCII?

 n_ord_high number; --n_ascii/156

 n_ord_low number;  --n mod 256

 n_temp number;

 n_temp1 number;

 v_PY varchar2(32767);



BEGIN



if p_String IS NULL  then

  RETURN '';

 end if;



  v_PY := '';

  n_len := length(p_String);

  FOR n_loop IN 1..n_len LOOP

    v_char := substr(p_string,n_loop,1);

    IF upper(v_char) IN (

        'A','B','C','D','E','F','G',

        'H','I','J','K','L','M','N',

        'O','P','Q','R','S','T',

        'U','V','W','X','Y','Z',

        '0','1','2','3','4','5','6','7','8','9',

        '(', ')', '[', ']','.', '!', '@', '#', '$',

        '%', '^', '&', '*', '-', '+','<', '>', '?', ':', '"')  THEN

      v_PY := v_PY||v_char;

    ELSE

        n_ascii := ascii(v_char);

        n_ord_high := trunc(n_ascii/256,0);

        n_ord_low := n_ascii-(n_ord_high*256);

        --DBMS_OUTPUT.PUT_LINE('n_ascii = '||to_char(n_ascii,'9999999'));

        --DBMS_OUTPUT.PUT_LINE('n_ord_high = '||to_char(n_ord_high,'9999999'));

        --DBMS_OUTPUT.PUT_LINE('n_ord_low = '||to_char(n_ord_low,'9999999'));

        IF (n_ord_high>128) and (n_ord_low>63) THEN

          CASE n_ord_high

            WHEN 162 THEN     --????

              IF n_ord_low>160 THEN

                v_PY := v_PY||get_roma_num_py(n_ord_low-160);

              END IF;

            WHEN 163 THEN     --??ASCII

              IF n_ord_low>128 THEN

                v_char := chr(n_ord_low-128);

                IF upper(v_char) IN (

                   'A','B','C','D','E','F','G',

                   'H','I','J','K','L','M','N',

                   'O','P','Q','R','S','T',

                   'U','V','W','X','Y','Z',

                   '0','1','2','3','4','5','6','7','8','9',

                   '(', ')', '[', ']') THEN

                  v_PY := v_PY||v_char;

                END IF;

              END IF;

            WHEN 166 THEN     --????

              IF (n_ord_low>160) AND (n_ord_low<185) THEN --A1--B8

                v_PY := v_PY||get_greece_alphabet_py(n_ord_low-160);

              ELSE

                IF (n_ord_low>192) AND (n_ord_low<217) THEN --C1--D8

                  v_PY := v_PY||get_greece_alphabet_py(n_ord_low-192);

                END IF;

              END IF;

            ELSE

            BEGIN

              n_temp := n_ord_high-128;

              n_ord_low := n_ord_low-63;

              n_temp1 := trunc(n_temp/10,0);

              n_temp1 := n_temp-n_temp1*10;

              IF n_temp1=0 THEN

                n_temp1 := 10;

              END IF;

              --DBMS_OUTPUT.PUT_LINE('n_temp = '||to_char(n_temp,'9999999'));

              --DBMS_OUTPUT.PUT_LINE('n_temp1 = '||to_char(n_temp1,'9999999'));

              CASE

              WHEN n_temp<11 THEN

                n_temp1 := get_py_index_01(n_temp1,n_ord_low);

              WHEN n_temp<21 THEN

                n_temp1 := get_py_index_02(n_temp1,n_ord_low);

              WHEN n_temp<31 THEN

                n_temp1 := get_py_index_03(n_temp1,n_ord_low);

              WHEN n_temp<41 THEN

                n_temp1 := get_py_index_04(n_temp1,n_ord_low);

              WHEN n_temp<51 THEN

                n_temp1 := get_py_index_05(n_temp1,n_ord_low);

              WHEN n_temp<61 THEN

                n_temp1 := get_py_index_06(n_temp1,n_ord_low);

              WHEN n_temp<71 THEN

                n_temp1 := get_py_index_07(n_temp1,n_ord_low);

              WHEN n_temp<81 THEN

                n_temp1 := get_py_index_08(n_temp1,n_ord_low);

              WHEN n_temp<91 THEN

                n_temp1 := get_py_index_09(n_temp1,n_ord_low);

              WHEN n_temp<101 THEN

                n_temp1 := get_py_index_10(n_temp1,n_ord_low);

              WHEN n_temp<111 THEN

                n_temp1 := get_py_index_11(n_temp1,n_ord_low);

              WHEN n_temp<121 THEN

                n_temp1 := get_py_index_12(n_temp1,n_ord_low);

              WHEN n_temp<121 THEN

                n_temp1 := get_py_index_13(n_temp1,n_ord_low);

              ELSE

                n_temp1 := 0;

              END CASE;

              v_PY := v_PY||substr(GetHzPY_by_index(n_temp1),1,1);

            END;

          END CASE;

        END IF;

    END IF;

  END LOOP;

  RETURN v_PY;

  --DBMS_OUTPUT.PUT_LINE(v_PY);

END GetHzPYCAP;

/





CREATE OR REPLACE FUNCTION FTGM.GetHzPY_by_index(

  p_PY_Index number)

 RETURN VARCHAR2 IS

 v_PY_List THZPY_LIST :=  THZPY_LIST(

    'a',      'aes',    'ai',     'an',     'ang',    'ao',     'ba',     'bai',    'baike',  'baiwa',

    'ban',    'bang',   'bao',    'be',     'bei',    'ben',    'beng',   'bi',     'bia',    'bian',

    'biao',   'bie',    'bin',    'bing',   'bo',     'bu',     'ca',     'cai',    'cal',    'can',

    'cang',   'cao',    'ce',     'cen',    'ceng',   'ceok',   'ceom',   'ceon',   'ceor',   'cha',

    'chai',   'chan',   'chang',  'chao',   'che',    'chen',   'cheng',  'chi',    'chong',  'chou',

    'chu',    'chua',   'chuai',  'chuan',  'chuang', 'chui',   'chun',   'chuo',   'ci',     'cis',

    'cong',   'cou',    'cu',     'cuan',   'cui',    'cun',    'cuo',    'da',     'dai',    'dan',

    'dang',   'dao',    'de',     'defa',   'dei',    'deli',   'dem',    'den',    'deng',   'deo',

    'di',     'dia',    'dian',   'diao',   'die',    'dim',    'ding',   'diu',    'dong',   'dou',

    'du',     'duan',   'dug',    'dui',    'dul',    'dun',    'duo',    'e',      'ei',     'en',

    'eng',    'eo',     'eol',    'eom',    'eos',    'er',     'fa',     'fan',    'fang',   'fei',

    'fen',    'feng',   'fenwa',  'fiao',   'fo',     'fou',    'fu',     'fui',    'ga',     'gad',

    'gai',    'gan',    'gang',   'gao',    'ge',     'gei',    'gen',    'geng',   'geo',    'geu',

    'gib',    'go',     'gong',   'gongli', 'gou',    'gu',     'gua',    'guai',   'guan',   'guang',

    'gui',    'gun',    'guo',    'ha',     'hai',    'hal',    'han',    'hang',   'hao',    'haoke',

    'he',     'hei',    'hem',    'hen',    'heng',   'heui',   'ho',     'hol',    'hong',   'hou',

    'hu',     'hua',    'huai',   'huan',   'huang',  'hui',    'hun',    'huo',    'hwa',    'hweong',

    'i',      'ji',     'jia',    'jialun', 'jian',   'jiang',  'jiao',   'jie',    'jin',    'jing',

    'jiong',  'jiu',    'jou',    'ju',     'juan',   'jue',    'jun',    'ka',     'kai',    'kal',

    'kan',    'kang',   'kao',    'ke',     'keg',    'kei',    'kem',    'ken',    'keng',   'keo',

    'keol',   'keop',   'keos',   'keum',   'ki',     'kong',   'kos',    'kou',    'ku',     'kua',

    'kuai',   'kuan',   'kuang',  'kui',    'kun',    'kuo',    'kweok',  'kwi',    'la',     'lai',

    'lan',    'lang',   'lao',    'le',     'lei',    'lem',    'len',    'leng',   'li',     'lia',

    'lian',   'liang',  'liao',   'lie',    'lin',    'ling',   'liu',    'liwa',   'lo',     'long',

    'lou',    'lu',     'luan',   'lue',    'lun',    'luo',    'lv',     'm',      'ma',     'mai',

    'man',    'mang',   'mangmi', 'mao',    'mas',    'me',     'mei',    'men',    'meng',   'meo',

    'mi',     'mian',   'miao',   'mie',    'min',    'ming',   'miu',    'mo',     'mol',    'mou',

    'mu',     'myeo',   'myeon',  'myeong', 'n',      'na',     'nai',    'nan',    'nang',   'nao',

    'ne',     'nei',    'nem',    'nen',    'neng',   'neus',   'ng',     'ngag',   'ngai',   'ngam',

    'ni',     'nian',   'niang',  'niao',   'nie',    'nin',    'ning',   'niu',    'nong',   'nou',

    'nu',     'nuan',   'nue',    'nun',    'nung',   'nuo',    'nv',     'nve',    'o',      'oes',

    'ol',     'on',     'ou',     'pa',     'pai',    'pak',    'pan',    'pang',   'pao',    'pei',

    'pen',    'peng',   'peol',   'phas',   'phdeng', 'phoi',   'phos',   'pi',     'pian',   'piao',

    'pie',    'pin',    'ping',   'po',     'pou',    'ppun',   'pu',     'q',      'qi',     'qia',

    'qian',   'qiang',  'qianke', 'qianwa', 'qiao',   'qie',    'qin',    'qing',   'qiong',  'qiu',

    'qu',     'quan',   'que',    'qun',    'ra',     'ram',    'ran',    'rang',   'rao',    're',

    'ren',    'reng',   'ri',     'rong',   'rou',    'ru',     'rua',    'ruan',   'rui',    'run',

    'ruo',    'sa',     'saeng',  'sai',    'sal',    'san',    'sang',   'sao',    'se',     'sed',

    'sei',    'sen',    'seng',   'seo',    'seon',   'sha',    'shai',   'shan',   'shang',  'shao',

    'she',    'shei',   'shen',   'sheng',  'shi',    'shike',  'shiwa',  'shou',   'shu',    'shua',

    'shuai',  'shuan',  'shuang', 'shui',   'shun',   'shuo',   'shw',    'si',     'so',     'sol',

    'song',   'sou',    'su',     'suan',   'sui',    'sun',    'suo',    'ta',     'tae',    'tai',

    'tan',    'tang',   'tao',    'tap',    'te',     'tei',    'teng',   'teo',    'teul',   'teun',

    'ti',     'tian',   'tiao',   'tie',    'ting',   'tiu',    'tol',    'ton',    'tong',   'tou',

    'tu',     'tuan',   'tui',    'tun',    'tuo',    'uu',     'wa',     'wai',    'wan',    'wang',

    'wei',    'wen',    'weng',   'wie',    'wo',     'wu',     'xi',     'xia',    'xian',   'xiang',

    'xiao',   'xie',    'xin',    'xing',   'xiong',  'xiu',    'xu',     'xuan',   'xue',    'xun',

    'ya',     'yan',    'yang',   'yao',    'ye',     'yen',    'yi',     'yin',    'ying',   'yo',

    'yong',   'you',    'yu',     'yuan',   'yue',    'yug',    'yun',    'za',     'zad',    'zai',

    'zan',    'zang',   'zao',    'ze',     'zei',    'zen',    'zeng',   'zha',    'zhai',   'zhan',

    'zhang',  'zhao',   'zhe',    'zhei',   'zhen',   'zheng',  'zhi',    'zhong',  'zhou',   'zhu',

    'zhua',   'zhuai',  'zhuan',  'zhuang', 'zhui',   'zhun',   'zhuo',   'zi',     'zo',     'zong',

    'zou',    'zu',     'zuan',   'zui',    'zun',    'zuo'

    );

BEGIN

    IF (p_PY_Index>0) AND (p_PY_Index<527) THEN

       --RETURN  INITCAP(v_PY_List(p_PY_Index));

       RETURN  v_PY_List(p_PY_Index);

    ELSE

      RETURN '';

    END IF;

END GetHzPY_by_index;

/

좋은 웹페이지 즐겨찾기