這是數據的一個例子,將在列11個步驟SQL作業多個查詢
Column1
Test1
test2
test3
我然後運行此查詢
Declare @Id uniqueidentifier
DECLARE db_cursor CURSOR FOR
SELECT Id
FROM DB1.table
WHERE Column1 is not null
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
update DB1.table
set Column1 = (select top(1) Column2 from DB2.table order by newid())
where Id = @id
FETCH NEXT FROM db_cursor INTO @id
END
CLOSE db_cursor
DEALLOCATE db_cursor
這是輸出我得到
Column1
tom
jack
bob
我創建了這個代碼,它使用DB2表列數據替換DB1表中的列。當我將它作爲sql server代理上的一個工作運行時,這工作正常。
我想要運行相同的查詢來更改具有相同列的更多數據庫。因此FROM查詢我想添加更多數據庫,如From DB1.table,DB2.table,DB3.table ...
沒有遊標,它不起作用,因爲它在更新後複製了像這樣的值。
column1
tom
tom
tom
首先,你永遠不應該在遊標中做一個更新,使用一個基於集合的操作,閱讀:http:// wiki。 lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM
在另一個數據庫中是db1.table而不是db2.table,或者它是否具有名稱空間db1,另一個是否具有名稱空間db2? – Archlight
它們是不同的數據庫 – MohammedT