Sql 在oracle窗体中插入记录
我正在使用Oracle Forms Builder,我有一个包含多条记录的块。代码看起来有点像这样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
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:您现在可以做的最重要的事情是读取错误消息。还是你想让我们猜你犯了什么错误?那可能很有趣。。。