FORM二次开发:
1、INPUTTEXT多行文本框(INPUTTEXT)、Button(INPUTBUTTON)、绑定数据库MTL_SERIAL_NUMBERS的文本项(SERIAL_NUMBER).
2、在inputbutton的when-button-pressed上加上这些代码:
DECLARE
i number;
j number;
j_old number;
srie_str varchar2(2000);
begin
GO_BLOCK('MTL_SERIAL_NUMBERS');
clear_block;--清空
srie_str:=:INPUTTEXT.INPUTTEXT;
------------------------------------------
i := 0;---计数器,出现的次数
j := 1;
j_old := j;
j:=instr(srie_str, chr(10));------chr(10)换行符号
--fnd_message.debug(srie_str);--------调试用的
-----循环写入
loop
exit when j=0;
i := i+1;
-------赋值-------
:MTL_SERIAL_NUMBERS.SERIAL_NUMBER := substr(srie_str, j_old, j-j_old);
j_old := j+1;
j := instr(srie_str, chr(10), j+1 );
--------转入下一条--------
next_record;
end loop;
-----------特殊处理--------------
next_record;
:MTL_SERIAL_NUMBERS.SERIAL_NUMBER :=substr(srie_str, j_old);---输出最后一行
------------------------------------------
GO_BLOCK('MTL_SERIAL_NUMBERS');
FIRST_RECORD;
end;
/*下面是PLSQL模型*/
declare
i number;
j number;
j_old number;
srie_str varchar2(100);
begin
--str := 'aa,bb,dfdfcc,ddfdfddd,eaae';-----多行文本中的字符串
srie_str := 'aa
bb
dfdfcc
ddfdfddd
eaae';
i := 0;---计数器,出现的次数
j := 1;---位置
j_old := j;
j:=instr(srie_str, 'chr(13)');------目标出现的位置
-----------FORMS里,chr(10)才是换行管用---------------------
--------------------循环取值-------------------------------
loop
exit when j=0;
i := i+1;
--dbms_output.put_line(to_char(j));
dbms_output.put_line(substr(srie_str, j_old, j-j_old));--输出倒数前的行
--dbms_output.put_line(to_char(i));
--dbms_output.put_line(' ');
j_old := j+1;
j := instr(srie_str, 'chr(13)', j+1 );
end loop;
dbms_output.put_line(substr(srie_str, j_old));---输出最后一行
end;
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow