我有一个存储元数据信息的表 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 中的列可以动态更改。
问问题
715 次
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 回答