2012-07-29 60 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列,您可能无法修改它。