お返事ありがとうございます。私はそのアイデアを使用して、次のSQL文を作成しました。すべて同じタイプのデータ(従業員ID)を持っているが、そのフィールド名は異なるかもしれない多くのテーブル50+があります。したがって、テーブル名によっては更新するフィールドが異なります。私の実際のWHEREとSET文はこの例よりも複雑ですが、この問題には重要ではありません。
まず、更新したいテーブル/フィールドを格納する一時テーブルを作成します。
これらのレコードをループして、SQLを生成します。動的SQLが好きではない人は、print文を使って別のクエリウィンドウに貼り付けて実行することができます。または、EXECステートメントを呼び出すこともできます。
私はあなたの答えを受け入れたいと思いますが、自分自身について完全に説明しなかったので、私の質問には答えられませんでした。いずれにせよ、あなたの助けに感謝します。
DECLARE @TableFieldDictionary TABLE
(
tablename VARCHAR(100),
fieldname varchar(100)
)
insert into @TableFieldDictionary(tablename,fieldname) values ('table1','field1');
insert into @TableFieldDictionary(tablename,fieldname) values ('table2','field2');
--put more insert statements here. In my case, I have 50 inserts
declare cursor_dictionary cursor
for select tablename, fieldname from @TableFieldDictionary
open cursor_dictionary
declare @looptablename VARCHAR(100)
declare @loopfieldname varchar(100)
fetch next from cursor_dictionary
into @looptablename,@loopfieldname
DECLARE @UpdateSql AS varchar(max)
WHILE @@FETCH_STATUS = 0
BEGIN
SET @UpdateSql = 'UPDATE ' + @looptablename +
' SET ' + @loopfieldname + ' = 123' +
' WHERE ' + @loopfieldname + ' = 456'
print @updatesql
--EXEC(@updatesql)
fetch next from cursor_dictionary
into @looptablename,@loopfieldname
END
CLOSE cursor_dictionary
DEALLOCATE cursor_dictionary
*笑い*レースはスウィフト(タイピスト)に見えます。 – MarkusQ