0

whileループを使用してSQLテーブルを更新しています。テーブルレコードでは、「id」はこの順序で27、28、29、30から45までです。この「id」を2、3、4、5から16まで更新しようとしています。このループですが、エラーのみが発生しています

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 構文にエラーがあります。'DECLARE @a INT の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

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

1 に答える 1

0

実行行を次のように変更します。

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

これを解析していないため、構文エラーがある可能性があります。しかし、それを機能させれば、あなたはうまくいくはずです。

考慮すべき点が 1 つあります...「id」が IDENTITY 列である場合、おそらくそれを変更することはできません。

于 2012-07-29T09:52:32.497 に答える