-- 查询自定义函数的源代码 SELECT text FROM user_source WHERE name = '函数名(全大写,如:HOS_GET_SORTABLE_REF)' AND type = 'FUNCTION' ORDER BY line; -- 自定义函数 -- 函数说明:入参书编号及数字位数,返回可排序编号,如入参为'ZW1-12-123'和4,则返回'ZW0001-0012-0123',第二个参数可不填,默认为4。 FUNCTION hos_get_sortable_ref( bh IN VARCHAR2, len IN NUMBER DEFAULT 4 ) RETURN VARCHAR2 IS v_res VARCHAR2(999); BEGIN SELECT LISTAGG(str || num, '') WITHIN GROUP ( ORDER BY lev ) INTO v_res FROM ( SELECT REGEXP_SUBSTR(ele, '\D*', 1) AS str, LPAD(REGEXP_SUBSTR(ele, '\d+', 1), len, '0') AS num, lev FROM ( SELECT REGEXP_SUBSTR(bh, '\D*\d+', 1, LEVEL) AS ele, LEVEL AS lev FROM dual CONNECT BY REGEXP_SUBSTR(bh, '\D*\d+', 1, LEVEL) IS NOT NULL ) ); RETURN v_res; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM); RETURN NULL; END hos_get_sortable_ref;