0

我有一个存储元数据信息的表 A (column_name,value)。
我有另一个表 B,它的列是 A 的行,还有一些额外的系统列。
例如,如果表 A 有两行(empID,1)(salary,200)那么表 B 将如下所示B(empid,salary,system_id,create_date,update_date)
我需要更新 B 并将 empid 设置为 1 并将工资设置为 200 的 pl/sql 过程。A 中的行和 B 中的列可以动态更改。

4

1 回答 1

1

从表 A 中获取列和值的列表,构建语句并立即执行:

declare
 cols varchar2(2000);
begin
 for a in (select * from a) loop
   cols := ','||a.column_name||'='||a.value||cols;
 end loop;
 cols:=substr(cols,2);
 execute immediate 'update b set '||cols;
end;
/

有关示例,请参见http://www.sqlfiddle.com/#!4/f6976/8 。

但是我想知道您将如何使用当前的数据库结构构建 where 子句。目前,您无法关联表 A 中的行来为表 B 构建 where 子句。

于 2012-07-14T07:43:51.017 回答