PLSQL - 用作参数解决方法



我有一个表,我们用它来导入一些数据。此表具有如下字段:

  • field_1
  • field_2
  • field_3

导入完成后,我调用一个后处理过程,我必须在该字段中执行一些逻辑(并且每个逻辑可能不同)并存储在在线表中。

这是一个可能的伪代码:

DECLARE
    rOnlineTable online_table%ROWTYPE;
FOR cur in (SELECT *
              FROM import_table
             WHERE state IS NULL)
LOOP
  rOnlineTable.online_field_1 := handleField(/* here i would like to call a function that have the logic to handle cur.field_1*/);
  rOnlineTable.online_field_2 := handleField(/* here i would like to call a function that have the logic to handle cur.field_2*/);
  rOnlineTable.online_field_3 := handleField(/* here i would like to call a function that have the logic to handle cur.field_3*/);
  INSERT INTO online_table VALUES rOnlineTable;
END LOOP;

这样(我认为)如果将来有什么变化,我只能更改处理程序方法的实现。或者我可以将一些处理程序函数交换为其他字段(例如:明天field_1需要与field_3相同的逻辑)。

有一些解决方法可以做到这一点,或者也许是另一个更好的解决方案?

简单的插入语句呢?

insert into online_table select func1(field1), func2(field2), func3(field3)   from import_table

其中功能1..3 看起来像

  create or replace function func1(a in import_table.field1%type) return   online_table.field1%type as
begin
  null; //some logic
end;