0

SQL Server 2008 R2 のコーディングを行っています。数十のテーブルを含む 2 つのデータベースがあります。

一方のデータベースの各テーブルには、他方のデータベースに同じ名前のテーブルが含まれています。

同じ名前のテーブルは同じ形式 (フィールドとデータ型) です。2 つのテーブルの内容は似ていますが、同一ではありません。もう一方に加えられた変更に基づいて一方を更新する必要がありますが、特定の状況下でのみです。これにはカーソルを使いたいと思いますが、良い例が見つかりません。

これまでの MSDN の例では、一度に 1 つのフィールドを変数に読み込んでいます。各テーブルで同一の 2 つの列を読み取り/変更できるようにする必要がありますが、すべてのテーブルのすべての列に対して変数を宣言するよりも面倒なことはないと思います。

行全体をフェッチし、いくつかの列をチェックしてから、2 つの列を変更した後に行全体を他のテーブルに書き込むかどうかを決定できるようにしたいと考えていますが、すべてのフィールドの変数を宣言する必要がありますか?フェッチ/書き込みしたいですか?行全体をフェッチして行全体を書き込む方法はありませんか?

4

2 に答える 2

3

一時テーブルを作成してそこに行を挿入することもできますが、MERGE非常に構成可能で高速なコマンドがここで役立つはずです。 http://technet.microsoft.com/en-us/library/bb510625.aspx

于 2012-11-19T16:29:26.967 に答える
1

あなたはできる

select a.*

しかし、できません

set a.* = b.*

カーソルは必要ありません。セット操作はこれをより適切に行う必要があります。
しかし、構文は面倒です。
.NET を使用して構文を構築できますか?

update a 
set a.col1 = b.col1, a.col2 == b.col12, a.col3 = b.col3 
from table as a
join table as b 
  on a.ID is b.ID 
where a.col1 <> b.col1 or a.col12 <> b.col2
于 2012-11-19T16:51:23.373 に答える