开发者博客:www.developsearch.com
简单函数:根据ID获取别名
FUNCTION GET_SET_ALIAS_BY_SETID(IN_SETID IN VARCHAR2) RETURN VARCHAR2 AS V_SET_ALIAS VARCHAR2(60); BEGIN SELECT T.ALIAS INTO V_SET_ALIAS FROM CDH_NEWRBT_SET T WHERE T.SET_ID = IN_SETID; RETURN V_SET_ALIAS; END;
函数: 字符串分割
-- 创建组合SETIDS表集合类型 CREATE OR REPLACE TYPE TBL_SPLIT_TYPE IS TABLE OF VARCHAR2 (4000); FUNCTION SPLIT_STR( P_STR IN VARCHAR2, P_DELIMITER IN VARCHAR2 DEFAULT (',')) RETURN TBL_SPLIT_TYPE IS J INT := 0; I INT := 1; LEN INT := 0; LEN1 INT := 0; STR VARCHAR2(4000); MY_SPLIT TBL_SPLIT_TYPE := TBL_SPLIT_TYPE(); BEGIN LEN := LENGTH(P_STR); LEN1 := LENGTH(P_DELIMITER); WHILE J < LEN LOOP J := INSTR(P_STR, P_DELIMITER, I); IF J = 0 THEN J := LEN; STR := SUBSTR(P_STR, I); MY_SPLIT.EXTEND; MY_SPLIT(MY_SPLIT.COUNT) := STR; IF I >= LEN THEN EXIT; END IF; ELSE STR := SUBSTR(P_STR, I, J - I); I := J + LEN1; MY_SPLIT.EXTEND; MY_SPLIT(MY_SPLIT.COUNT) := STR; END IF; END LOOP; RETURN MY_SPLIT; END;
检查维度是否存在交集
FUNCTION COUNT_DMNSN(IN_DMNSN_A IN NUMBER, IN_DMNSN_B IN NUMBER) RETURN NUMBER AS V_COUNT NUMBER; BEGIN -- 任意一方为-1(全选) 都表示存在交集 将V_COUNT手工置值为1 IF (IN_DMNSN_A = -1 OR IN_DMNSN_B = -1) THEN V_COUNT := 1; -- 两者都不为-1的情况需要铺开判断是否存在交集 ELSE SELECT COUNT(0) INTO V_COUNT FROM (SELECT D.CODE FROM CDH_NEWRBT_SET_DMNSN D WHERE D.DMNSN_ID = IN_DMNSN_A INTERSECT SELECT D.CODE FROM CDH_NEWRBT_SET_DMNSN D WHERE D.DMNSN_ID = IN_DMNSN_B); END IF; -- 返回结果 RETURN V_COUNT; END;
开发者博客:www.developsearch.com