sql sql差異 - 我如何獲得受存儲過程影響的記錄數?




server比較 sql比較 (6)

警告: @@ROWCOUNT可能會返回虛假數據,如果被更改的表有觸發器連接到它!

@@ROWCOUNT將返回受TRIGGER影響的記錄數量,而不是實際的語句!

對於直接針對數據庫執行的INSERTUPDATEDELETE SQL語句,大多數數據庫提供程序返回受影響的行數。 對於存儲過程,受影響的記錄數始終為-1

我們如何獲得受存儲過程影響的記錄數?


@@RowCount將為您提供受SQL語句影響的記錄數。

只有在您之後立即發布, @@RowCount才有效。 所以如果你陷入錯誤,你必須在同一條線上完成。 如果你把它分開,你會錯過任何你放在第二位的。

SELECT @NumRowsChanged = @@ROWCOUNT, @ErrorCode = @@ERROR

如果您有多個語句,則必須捕獲每個語句受影響的行數並添加它們。

SELECT @NumRowsChanged = @NumRowsChanged  + @@ROWCOUNT, @ErrorCode = @@ERROR

對於Microsoft SQL Server,可以返回@@ROWCOUNT變量以返回存儲過程中最後一條語句影響的行數。


為存儲過程註冊一個out參數,如果使用SQL Server,則根據@@ROWCOUNT設置值。 如果您使用的是Oracle,請使用SQL%ROWCOUNT

請注意,如果您有多個INSERT/UPDATE/DELETE ,則需要一個變量來存儲@@ROWCOUNT對每個操作的結果。



我想為Access SQL或VBA代碼添加此更新:我們必須在SET之前執行JOIN。

訪問SQL

UPDATE
    Sales_Import
INNER JOIN
    RetrieveAccountNumber 
ON 
    Sales_Import.LeadID = RetrieveAccountNumber.LeadID
SET
    Sales_Import.AccountNumber = RetrieveAccountNumber.AccountNumber;




sql sql-server oracle tsql plsql