从 Oracle Apex 页面获取多个值并将其存储在表中
Posted
技术标签:
【中文标题】从 Oracle Apex 页面获取多个值并将其存储在表中【英文标题】:Taking multiple value from Oracle Apex page and store it in an table 【发布时间】:2017-03-03 10:42:11 【问题描述】:我开发了 1 个顶点页面,其中有一个文本字段。我将通过逗号分隔来插入多个值。我希望当我点击提交按钮时,它应该根据逗号分隔值,并且应该单独插入不同的行。例如,如果我在我的文本字段中传递“abc,cde,efgh,ijhk,gygg”,那么它应该在一行中插入“abc”,在另一行中插入“cde”,依此类推。当我只插入一个值时,它也不应该出现任何错误。
我只能存储一个数据的值,因为我创建了一个过程,并且该过程只需要一个数据,但我不知道是否通过逗号分隔多个值来传递多个值,然后它应该插入。我在这里发布我的程序。
create or replace procedure Exclude_items(
p_analyze_name in varchar2,
p_material_number in varchar2
)
as
p_analyze_id number;
begin
select analyze_id
into p_analyze_id
from analyzes
where table_name = p_analyze_name;
insert into p20da.test_vishal(ANALYZE_ID,MATNR,) values(p_analyze_id,p_material_number)
end;
这里 matnr 将有多个用逗号分隔的值,因为它是 apex 页面中的文本字段,但 analyze_id 将是常量。
我想编写这个过程,以便它可以在逗号出现时分开,并且如果我只插入一个值,则不应该出现任何错误。
【问题讨论】:
在 SO 上的每个人都有社会责任来教育他人 SO 礼仪,所以请阅读此***.com/help/someone-answers 【参考方案1】:您应该利用APEX_UTIL
包的STRING_TO_TABLE
功能。将以下代码添加到 Submit 过程中,您的 exclude_items 过程保持不变。
DECLARE
L_MATERIAL_NUMBER APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
L_MATERIAL_NUMBER := APEX_UTIL.STRING_TO_TABLE(:P2_MATERIAL_NUMBER,',');
FOR I IN 1..L_MATERIAL_NUMBER.COUNT
LOOP
EXCLUDE_ITEMS('tablea', L_MATERIAL_NUMBER(I));
END LOOP;
END;
更多API封装函数信息 --> http://docs.oracle.com/cd/E11882_01/appdev.112/e12510/apex_util.htm#CHDFEEJD
【讨论】:
【参考方案2】:怎么样:
create or replace procedure exclude_items( p_analyze_name in varchar2, p_material_number in varchar2 )
as
comma_pos number;
sub_name varchar2(4000);
temp_name varchar2(4000);
p_analyze_id number;
begin
select analyze_id
into p_analyze_id
from analyzes
where table_name = p_analyze_name;
temp_name := p_material_number;
LOOP
comma_pos := instr( temp_name, ',' );
exit when comma_pos = 0;
sub_name := substr( temp_name,1,comma_pos-1 );
insert into p20da.test_vishal(ANALYZE_ID,MATNR,) values(p_analyze_id,sub_name)
temp_name := substr( temp_name, comma_pos + 1 );
END LOOP;
insert into p20da.test_vishal(ANALYZE_ID,MATNR,) values(p_analyze_id,temp_name)
end;
/
【讨论】:
以上是关于从 Oracle Apex 页面获取多个值并将其存储在表中的主要内容,如果未能解决你的问题,请参考以下文章
Oracle Apex 页面在导航到另一个页面并返回后无法获取数据
如何获取 Oracle APEX 文本字段值(现在我得到的都是 NULL)(Oracle APEX Application Express 21.1)