Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle apex 如何将共享外键分配给使用数据加载向导插入的所有记录?_Oracle Apex - Fatal编程技术网

Oracle apex 如何将共享外键分配给使用数据加载向导插入的所有记录?

Oracle apex 如何将共享外键分配给使用数据加载向导插入的所有记录?,oracle-apex,Oracle Apex,我有一个ApEx应用程序,其中一个目的是要求上传电信提供商提供的计费数据。数据将作为CSV文件提供 我们有两张桌子。第一个表phone_invoice包含每个发票的元数据,例如计费日期和提供商名称。第二个表,电话发票明细主要基于通话记录 phone\u invoice\u detail有一个外键invoice\u id,该外键输入phone\u invoiceid。这将创建库存标准主明细关系 我们使用ApEx数据加载向导为用户设置导入功能。但是我需要为每个导入的行分配发票id 目前,我有一个电话

我有一个ApEx应用程序,其中一个目的是要求上传电信提供商提供的计费数据。数据将作为CSV文件提供

我们有两张桌子。第一个表phone_invoice包含每个发票的元数据,例如计费日期和提供商名称。第二个表,电话发票明细主要基于通话记录

phone\u invoice\u detail有一个外键invoice\u id,该外键输入phone\u invoiceid。这将创建库存标准主明细关系

我们使用ApEx数据加载向导为用户设置导入功能。但是我需要为每个导入的行分配发票id

目前,我有一个电话发票页面。用户单击一个按钮,导入发票数据,该按钮将分支到数据加载向导,并使用该发票ID的值设置页面项P1000\u Invoice\u ID-P999\u ID

当用户开始该过程时,提供的CSV数据包含除发票ID以外的所有字段。我想要的是基础表中的该列-发票ID-设置为P1000发票ID的值

我目前的重点是使用转换规则。这是非常令人沮丧的,因为文档没有告诉您关于它们的任何信息,也没有示例

我尝试过的排列:

-- PL/SQL Expression:
:INVOICE_ID := :P1000_INVOICE_ID
:INVOICE_ID := :P999_ID
SELECT :P1000_INVOICE_ID INTO :INVOICE_ID FROM DUAL
SELECT :P999_ID INTO :INVOICE_ID FROM DUAL

-- Replace:
-- Expression 1           Expression 2
:P1001_INVOICE_ID         :INVOICE_ID
:P999_INVOICE_ID          :INVOICE_ID

如您所见,APEX为导入创建了4个页面。它使用名为LOAD_CONTENT的apex集合来存储导入的数据。因此,您可以在将此集合加载到表中之前对其进行更改

转到名为“数据验证”的页面此页面具有报告数据验证,并添加页面过程,以及下一个参数:

类型:PL/SQL匿名块

处理点:加载-在收割台之前

资料来源:

但在这个过程中,您的列的编号发生了变化。
我在我的APEX版本4.1中尝试过这个例子-它工作得很好。

谢谢-我将在周一看一看。它工作得很好,但正如有时发生的那样,需求发生了变化。
declare 
  -- Local variables here
  i integer;
begin
  for i in (
    select t.seq_id
     from apex_collections t
     where t.collection_name = 'LOAD_CONTENT'
  ) loop
    apex_collection.update_member_attribute(
      p_collection_name => 'LOAD_CONTENT',
      p_seq => i.seq_id,
      p_attr_number => 3, -- here number of your column you want update
      p_attr_value => :P1000_INVOICE_ID -- value 
    );      
  end loop;  
end;