メタデータ情報を格納するテーブル 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 の列は動的に変更できます。
質問する
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を参照してください。
しかし、現在の DB 構造で where - 句をどのように構築するのだろうか。現在、テーブル A の行を関連付けてテーブル B の where 句を作成する方法はありません。
于 2012-07-14T07:43:51.017 に答える