您的位置:首页 > 数据库 > Oracle

Oracle 自定义函数示例

2015-11-12 14:43 483 查看
CREATE OR REPLACE FUNCTION strgetdomse(p_string2 VARCHAR2,p_string VARCHAR2)

RETURN  NUMBER

AS

--declare

--p_string   VARCHAR2(100):='BBB';

-- p_string2   VARCHAR2(100):='CC,AA,BB,DD';

v_length   NUMBER := LENGTH(p_string);

v_length2  NUMBER := LENGTH(p_string2);

v_start    NUMBER := 1;

v_index    NUMBER;

p_delimiter VARCHAR2(10):=',';

v_rnumber NUMBER:=0;

BEGIN

if(v_length>v_length2) THEN

RETURN v_rnumber;

END IF;

WHILE(v_start <= v_length)

LOOP

v_index := INSTR(p_string, p_delimiter, v_start);

IF v_index = 0

THEN

if INSTR(p_string2,SUBSTR(p_string, v_start))>0

then

v_rnumber:=v_rnumber+1;

end if;

v_start := v_length + 1;

ELSE

if INSTR(p_string2,SUBSTR(p_string, v_start, v_index - v_start))>0

then

v_rnumber:=v_rnumber+1;

end if;

v_start := v_index + 1;

END IF;

END LOOP;

RETURN v_rnumber;

END ;

实现功能

select strgetdomse('AA,BB,CC','AA,CC') FROM DUAL;

--------------------------------------------------------

SELECT RS,strgetdomse('AA,BB,CC','AA,BB'),ID FROM (

SELECT  ID,to_char(wmsys.wm_concat(C)) RS FROM (

SELECT 1 ID, 'AA' C FROM DUAL UNION ALL SELECT 1 ID, 'BB' FROM DUAL  UNION ALL SELECT 1 ID, 'CC' FROM DUAL

UNION ALL

SELECT 2 ID, 'AA' C FROM DUAL UNION ALL SELECT 2 ID, 'CC' FROM DUAL  UNION ALL SELECT 2 ID, 'DD' FROM DUAL)

GROUP BY ID) WHERE strgetdomse('AA,BB,CC','AA,BB')>1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: