1. 程式人生 > >Oracle資料庫自定義函式練習

Oracle資料庫自定義函式練習

--測試函式3
CREATE OR REPLACE FUNCTION FN_TEST3
(NUM IN VARCHAR2)
RETURN VARCHAR2 IS
TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300);
NUMARR VARCHAR2_ARR;
TEMPNUM VARCHAR2(1000) := '';
TEMPCOUNT NUMBER := 0;
BEGIN
  SELECT TRIM(REGEXP_SUBSTR(NUM,'(\w|[-])+',1,LEVEL))
  BULK COLLECT INTO NUMARR FROM 
  DUAL
  CONNECT 
BY LEVEL <= REGEXP_COUNT(NUM,'(\w|[-])+'); FOR I IN 1 .. NUMARR.COUNT LOOP IF NUMARR(I) IS NOT NULL THEN TEMPNUM := TEMPNUM || NUMARR(I); END IF; END LOOP; RETURN TEMPNUM; END; / --測試函式2 CREATE OR REPLACE FUNCTION FN_TEST2 (NUM IN VARCHAR2) RETURN NUMBER IS TYPE VARCHAR2_ARR
IS TABLE OF VARCHAR2(300); NUMARR VARCHAR2_ARR; TEMPNUM VARCHAR2(1000) := ''; TEMPCOUNT NUMBER := 0; BEGIN SELECT TRIM(REGEXP_SUBSTR(NUM,'(\w|[-])+',1,LEVEL)) BULK COLLECT INTO NUMARR FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT(NUM,'(\w|[-])+'); FOR I IN 1 .. NUMARR.COUNT LOOP IF NUMARR(I) IS
NOT NULL THEN TEMPNUM := TEMPNUM || NUMARR(I) || ','; TEMPCOUNT := TEMPCOUNT + 1; END IF; END LOOP; RETURN TEMPCOUNT; END; / --測試函式 CREATE OR REPLACE FUNCTION FN_TEST (NUM IN VARCHAR2) RETURN VARCHAR2 IS TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300); NUMARR VARCHAR2_ARR; TEMPNUM VARCHAR2(1000) := ''; BEGIN SELECT TRIM(REGEXP_SUBSTR(NUM,'^.+',1,LEVEL)) BULK COLLECT INTO NUMARR FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT(NUM,'^.+'); FOR I IN 1 .. NUMARR.COUNT LOOP IF NUMARR(I) IS NOT NULL THEN TEMPNUM := TEMPNUM || NUMARR(I) || ','; END IF; END LOOP; RETURN TEMPNUM; END; /