49 lines
1.0 KiB
MySQL
49 lines
1.0 KiB
MySQL
-- 查询自定义函数的源代码
|
||
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; |