답변 해 주셔서 감사합니다. 그 아이디어를 다음 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