1

我试图在像这样插入之后将 A 块的值插入到 oracle 表单中的表中

GO_BLOCK ('LCL_SP_DTL');
   LAST_RECORD;
   LV_N_LAST_REC := :SYSTEM.TRIGGER_RECORD;
   FIRST_RECORD;
   LV_N_FST_REC := :SYSTEM.TRIGGER_RECORD;

   FOR I IN LV_N_FST_REC .. LV_N_LAST_REC
   LOOP
      INSERT INTO LEDGER(LDATE, LTYPE, DESCRIPTION, DEBIT, CREDIT, SID,VID)
           VALUES (:LCLSP_MST.REC_DATE, 'Local Sale', DES, 0, AMOUNT, LS_ID,'LS-' || :LCLSP_MST.REC_ID);
      NEXT_RECORD;
   END LOOP;

但是它给了我错误无法正常工作。请提供任何建议以LEDGER在运行时插入值

4

1 回答 1

2

您正在使用:SYSTEM.TRIGGER_RECORD,这是您的代码起源的记录号。它不会因为您导航到另一条记录而改变。换句话说,您的LV_N_LAST_RECLV_N_FST_REC将被设置为相同的值。

我认为您可以使用:SYSTEM.CURRENT_RECORD,但更好的解决方案是传统的表单记录循环:

GO_BLOCK ('LCL_SP_DTL');
FIRST_RECORD;
LOOP
  INSERT INTO LEDGER(LDATE, LTYPE, DESCRIPTION, DEBIT, CREDIT, SID,VID)
       VALUES (:LCLSP_MST.REC_DATE, 'Local Sale', DES, 0, AMOUNT, LS_ID
              ,'LS-' || :LCLSP_MST.REC_ID);
  EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
  NEXT_RECORD;
END LOOP;
于 2013-05-07T08:34:22.720 回答