1 CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS 2 V_COMPARE VARCHAR2(100); 3 V_RETURN VARCHAR2(4000); 4 FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS 5 BEGIN 6 RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M'); 7 END; 8 BEGIN 9 10 FOR I IN 1..LENGTH(''''||P_NAME||'''') LOOP 11 V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1)); 12 IF V_COMPARE >= F_NLSSORT(' 吖 ') AND V_COMPARE <= F_NLSSORT('驁 ') THEN 13 V_RETURN := V_RETURN || 'a'; 14 ELSIF V_COMPARE >= F_NLSSORT('八 ') AND V_COMPARE <= F_NLSSORT('簿 ') THEN 15 V_RETURN := V_RETURN || 'b'; 16 ELSIF V_COMPARE >= F_NLSSORT('嚓 ') AND V_COMPARE <= F_NLSSORT('錯 ') THEN 17 V_RETURN := V_RETURN || 'c'; 18 ELSIF V_COMPARE >= F_NLSSORT('咑 ') AND V_COMPARE <= F_NLSSORT('鵽 ') THEN 19 V_RETURN := V_RETURN || 'd'; 20 ELSIF V_COMPARE >= F_NLSSORT('妸 ') AND V_COMPARE <= F_NLSSORT('樲 ') THEN 21 V_RETURN := V_RETURN || 'e'; 22 ELSIF V_COMPARE >= F_NLSSORT('发 ') AND V_COMPARE <= F_NLSSORT('猤 ') THEN 23 V_RETURN := V_RETURN || 'f'; 24 ELSIF V_COMPARE >= F_NLSSORT('旮 ') AND V_COMPARE <= F_NLSSORT('腂 ') THEN 25 V_RETURN := V_RETURN || 'g'; 26 ELSIF V_COMPARE >= F_NLSSORT('妎 ') AND V_COMPARE <= F_NLSSORT('夻 ') THEN 27 V_RETURN := V_RETURN || 'h'; 28 ELSIF V_COMPARE >= F_NLSSORT('丌 ') AND V_COMPARE <= F_NLSSORT('攈 ') THEN 29 V_RETURN := V_RETURN || 'j'; 30 ELSIF V_COMPARE >= F_NLSSORT('咔 ') AND V_COMPARE <= F_NLSSORT('穒 ') THEN 31 V_RETURN := V_RETURN || 'k'; 32 ELSIF V_COMPARE >= F_NLSSORT('垃 ') AND V_COMPARE <= F_NLSSORT('擽 ') THEN 33 V_RETURN := V_RETURN || 'l'; 34 ELSIF V_COMPARE >= F_NLSSORT('嘸 ') AND V_COMPARE <= F_NLSSORT('椧 ') THEN 35 V_RETURN := V_RETURN || 'm'; 36 ELSIF V_COMPARE >= F_NLSSORT('拏 ') AND V_COMPARE <= F_NLSSORT('瘧 ') THEN 37 V_RETURN := V_RETURN || 'n'; 38 ELSIF V_COMPARE >= F_NLSSORT('筽 ') AND V_COMPARE <= F_NLSSORT('漚 ') THEN 39 V_RETURN := V_RETURN || 'o'; 40 ELSIF V_COMPARE >= F_NLSSORT('妑 ') AND V_COMPARE <= F_NLSSORT('曝 ') THEN 41 V_RETURN := V_RETURN || 'p'; 42 ELSIF V_COMPARE >= F_NLSSORT('七 ') AND V_COMPARE <= F_NLSSORT('裠 ') THEN 43 V_RETURN := V_RETURN || 'q'; 44 ELSIF V_COMPARE >= F_NLSSORT('亽 ') AND V_COMPARE <= F_NLSSORT('鶸 ') THEN 45 V_RETURN := V_RETURN || 'r'; 46 ELSIF V_COMPARE >= F_NLSSORT('仨 ') AND V_COMPARE <= F_NLSSORT('蜶 ') THEN 47 V_RETURN := V_RETURN || 's'; 48 ELSIF V_COMPARE >= F_NLSSORT('侤 ') AND V_COMPARE <= F_NLSSORT('籜 ') THEN 49 V_RETURN := V_RETURN || 't'; 50 ELSIF V_COMPARE >= F_NLSSORT('屲 ') AND V_COMPARE <= F_NLSSORT('鶩 ') THEN 51 V_RETURN := V_RETURN || 'w'; 52 ELSIF V_COMPARE >= F_NLSSORT('夕 ') AND V_COMPARE <= F_NLSSORT('鑂 ') THEN 53 V_RETURN := V_RETURN || 'x'; 54 ELSIF V_COMPARE >= F_NLSSORT('丫 ') AND V_COMPARE <= F_NLSSORT('韻 ') THEN 55 V_RETURN := V_RETURN || 'y'; 56 ELSIF V_COMPARE >= F_NLSSORT('帀 ') AND V_COMPARE <= F_NLSSORT('咗 ') THEN 57 V_RETURN := V_RETURN || 'z'; 58 END IF; 59 END LOOP; 60 RETURN V_RETURN; 61 END;