ForeverSmiYngEcologyKit/Oracle自定义函数.sql

49 lines
1.0 KiB
MySQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 查询自定义函数的源代码
SELECT
text
FROM
user_source
WHERE
name = '函数名(全大写HOS_GET_SORTABLE_REF)'
AND type = 'FUNCTION'
ORDER BY
line;
-- 定义函数
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;