2014-10-22 15 views
0

試圖更新多個記錄。在sql中更新多個記錄 - 語法

tbl_test - 現有的表

EmployeeName Effort Date 
aaa   8  2014-10-21 
bbb   9  2014-10-21 
ccc   7  2014-10-21 

@dtCSV - 表型作爲參數

EmployeeName Effort 
aaa   10  
ccc   10 

預期輸出:

EmployeeName Effort Date 
aaa   10  2014-10-21 
bbb   9  2014-10-21 
ccc   10  2014-10-21 

此代碼給出錯誤 - 't'附近的語法不正確。什麼是正確的語法來做到這一點。

ALTER PROCEDURE SaveEffort 
( 
    @TimesheetDate datetime, //(2014-10-21) 
    @dtCSV AS dbo.SaveEffort_TableType readonly 
) 
AS 
BEGIN 
    UPDATE tbl_test t 
     SET t.Effort = d.Effort 
    FROM @dtCSV d 
    WHERE t.EmployeeName = d.EmployeeName 
      AND t.[Date] = @TimesheetDate 
END 

回答

2
UPDATE t 
SET t.Effort = d.Effort 
FROM tbl_test t JOIN @dtCSV d 
ON t.EmployeeName = d.EmployeeName 
WHERE t.[Date] = @TimesheetDate 
+0

非常感謝你。這工作。如果我想爲了可讀性而寫'update tbl_test',那麼其餘的代碼應該如何。 – Qwerty 2014-10-22 06:03:55

+1

不客氣。我們只能在UPDATE關鍵字之後立即更新表的別名。如果沒有該別名,則應在整個SQL語句中使用真實的表名。 – 2014-10-22 09:30:35