2012-07-29 46 views
0

正在使用while循環更新我的sql表格,在我的表格記錄中,「id」的順序是27,28,29,30到45.我試圖將這個「id」更新爲2,3,4,5高達16我用這個循環,但我得到的錯誤只如何使用while循環更新sql表格

DECLARE @a INT 
DECLARE @b INT 
SET @a = 2 
SET @b = 27 
WHILE @b < 42 
BEGIN 
exec sp_executesql 'UPDATE Cpart2_TEST_2 SET id = @a where id = @b 

SET @a = @a + 1 
SET @b = @b + 1 
END 

這是錯誤消息

1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用 附近手冊「聲明@a INT

DECLARE @b INT 
SET @a = 2 
SET @b = 27 
WHILE @b < 42 
BEGIN 
' at line 1 
+0

你有什麼錯誤? – OcuS 2012-07-29 09:47:22

+2

*僅錯誤*不是有效的錯誤消息。請發佈錯誤的確切文本,幷包含您正在使用的SQL Server版本。 – 2012-07-29 09:47:43

+1

**您正在使用哪種數據庫系統? 'sp_executesql'似乎表示SQL Server,而錯誤消息則引用了MySQL--那麼它現在是真的嗎? – 2012-07-29 09:58:33

回答

0

更改您的EXEC行:

exec sp_executesql 'UPDATE Cpart2_TEST_2 SET id = ' + CAST(@a AS nvarchar(3)) + ' where id = + ' CAST(@b AS nvarchar(3)) 

我沒有解析這樣它可能有語法錯誤。但要做到這一點,你應該很好。

有一點需要考慮......如果'id'是一個IDENTITY列,您可能無法修改它。