最近在OAF打印时,需要根据页面所勾选的数据进行打印。
在OAF获取勾选的行id后,构成一个字符串(如‘1,3,5’)后传入后台处理的PKG中。
故而,需要从这个含有行号的字符串分离出行号id。
为了方便处理,特地写了一个过程,将行号id,逐一存入一张临时表中。
PROCEDURE get_delivery_plan_id(p_plan IN VARCHAR2) IS
l_location NUMBER := 0;
l_names_adjusted VARCHAR2(5000);
l_prev_location NUMBER :=0;
BEGIN
l_names_adjusted := p_plan_id||‘,’; --在字符串后添加一个逗号
LOOP
l_location := INSTR(l_names_adjusted,‘,’,l_location + 1); --获取逗号位置,返回0则表示不存在
EXIT WHEN l_location = 0;
INSERT INTO B_ASCP_ASN_PLAN_TEMP(delivery_plan_id) --将id 存入临时表
VALUES (TO_NUMBER(SUBSTR(l_names_adjusted, --substr 截取字符串,截取位于两个逗号之间的数字id
l_prev_location + 1,
l_location - l_prev_location - 1)));
l_prev_location := l_location;
END LOOP;
END get_delivery_plan_id;
如上的方法便可实现提取ID.