添加数据库自定义函数记录

This commit is contained in:
ForeverSmiYng 2025-08-05 14:18:44 +08:00
parent 40adaba2c2
commit 11357fd74e

49
Oracle自定义函数.sql Normal file
View File

@ -0,0 +1,49 @@
-- 查询自定义函数的源代码
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;