Sql 在oracle窗体中插入记录

Sql 在oracle窗体中插入记录,sql,oracle,plsql,oracleforms,Sql,Oracle,Plsql,Oracleforms,我正在使用Oracle Forms Builder,我有一个包含多条记录的块。代码看起来有点像这样 first_record; IF NAME_IN('SYSTEM.LAST_RECORD') != 'TRUE' THEN LOOP IF name_in('QOTLNDET_LINES.SERIAL_NUMBER') IS NOT NULL THEN

我正在使用Oracle Forms Builder,我有一个包含多条记录的块。代码看起来有点像这样

first_record;
IF NAME_IN('SYSTEM.LAST_RECORD') != 'TRUE' THEN                                 
  LOOP                  
    IF name_in('QOTLNDET_LINES.SERIAL_NUMBER') IS NOT NULL THEN                         
      QOTLNDET_LINES_REMOVE.Delete_Row;
      clear_record;     
    ELSE                    
      next_record;
    END IF;
    EXIT WHEN NAME_IN('SYSTEM.LAST_RECORD') = 'TRUE';

  END LOOP;
  execute_query;
  COMMIT;
  go_block('QOTHDDET_MAIN');
END IF; 

在下一个_记录之前,在ELSE段中,我需要删除当前记录并重新插入它。问题不是删除记录,而是重新插入。有什么想法吗?提前谢谢

我同意APC,与其重新插入记录(这意味着删除记录,然后再次插入记录),更简单的方法是只更新DB(或非DB)块中的字段。差不多-

Go_Block('Block_B1');
Last_Record;
L_num_records := :system.cursor_record;
FOR i in 1..L_num_records
LOOP    
     Go_Block('Block_B1');
     Go_Record(i);
     --update the fields in the row
     :Block_B1.item1 := 'Set your value';
     :Block_B1.item2 := 'Set your value';
     ...
     ...
     Next_Record;
END LOOP;
First_Record;

我同意APC和Annjawn的观点,即更新似乎是正确的方式。当查看代码时,似乎您的代码位于pll库中。当您使用名称_in()而不是直接引用该项时,会出现这种情况。如果这是真的,那么就意味着在为项目赋值时自然不能使用直接引用。相反,您必须使用copy()。我已经有一段时间没有在()和copy()中使用name_了,但类似的方法应该可以:

IF NAME_IN('SYSTEM.LAST_RECORD') != 'TRUE' THEN                                 
  LOOP                  
    IF name_in('QOTLNDET_LINES.SERIAL_NUMBER') IS NOT NULL THEN                         
      QOTLNDET_LINES_REMOVE.Delete_Row;
      clear_record;     
    ELSE        
      Copy('new value', 'QOTLNDET_LINES.INVENTORY_ITEM');

      next_record;
    END IF;
    EXIT WHEN NAME_IN('SYSTEM.LAST_RECORD') = 'TRUE';

  END LOOP;
  execute_query;
  COMMIT;
  go_block('QOTHDDET_MAIN');
END IF; 

为什么你想做这个奇怪的事情而不是仅仅做一个更新?我不确定更新是否会更新相关字段。。。但是如果有更新,请告诉我如何更新:p块是QOTLNDET_行,项目是库存项目。。。我正在这样做::QOTLNDET\u LINES.INVENTORY\u ITEM='abc',但我一直收到一个错误。@Nacho321:您现在可以做的最重要的事情是读取错误消息。还是你想让我们猜你犯了什么错误?那可能很有趣。。。