我有以下兩個update
語句 - >執行更新優化查詢
第一:
DECLARE @NR NVARCHAR(100);
DECLARE RECORDSORDER CURSOR FAST_FORWARD FOR
select gid from #CONFIRMEDORDER order by DOCUMENTCODE
OPEN RECORDSORDER
FETCH NEXT FROM RECORDSORDER INTO @NR
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE MYLINKEDSERVER.SERVER.DBO.DocumentLinesTable
SET
udfvalue1=(SELECT Quantity1 FROM #CONFIRMEDORDER WHERE [email protected]),
udfvalue2=(SELECT Quantity2 from #CONFIRMEDORDER WHERE [email protected]),
Stringfield1=(SELECT Warehouse FROM #CONFIRMEDORDER WHERE [email protected])
WHERE [email protected]
FETCH NEXT FROM RECORDSORDER INTO @NR
END
CLOSE RECORDSORDER DEALLOCATE RECORDSORDER
--the second one comes right after the first one--
二
UPDATE MYLINKEDSERVER.SERVER.DBO.DocumentHeaderTable
SET
DocumentHeaderTable.ADFLAG3=1,
DocumentHeaderTable.adstringfield3=(SELECT top 1 GRUPCUST FROM #CONFIRMEDORDER)
WHERE GID IN (SELECT FDOCUMENTGID FROM #CONFIRMEDORDER)
LE: 場景如下:我有5個文件每一個都有N行。第一條語句通過遊標來更新文檔中的所有行,基於臨時表中的某些信息,第二條語句在每個文檔中更新完所有行之後,更改作爲標誌的文檔狀態,從0到1.
我的問題是:第二條語句只有在所有文檔中的所有行都更新時(在第一條update
聲明後)纔開始,無論它們有多少,我都想讓它啓動在每個文檔中的所有行被更新之後用1標記文檔標誌。我該如何執行此操作?謝謝
我會更專注於第一次更新聲明。你正在做3個子查詢來更新一個表,爲什麼不把它作爲一個UPDATE SELECT語句來執行,所以你只打一次#CONFIRMEDORDER?另外,是否必須使用光標? SQL作爲基於集合的語言運行得更好。如果您可以提供一些示例數據,我相信可以以更有效的方式完成。 –
@RichBenner - 請看我的LE。 – cdrrrrr
我需要做3個子查詢,因爲最初我通過XML文件將一些信息從我的數據庫發送到另一個系統,之後,我收到相同的信息,我需要比較發送和接收的行。 – cdrrrrr