0

メタデータ情報を格納するテーブル A (column_name,value) があります。
A の行として列を持ち、システム列がいくつか追加された別のテーブル B があります。
たとえば、テーブル A に 2 つの行がある場合(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を参照してください。

しかし、現在の DB 構造で where - 句をどのように構築するのだろうか。現在、テーブル A の行を関連付けてテーブル B の where 句を作成する方法はありません。

于 2012-07-14T07:43:51.017 に答える