8

場合

現在、私はデータベースシードスクリプトに取り組んでおり、sqlcmd. たとえば、このスクリプト サンプル:

IF (SELECT COUNT(*) FROM Genders)=0
BEGIN
   PRINT N'Seeding table Genders...'

   SET IDENTITY_INSERT Genders ON
   GO

   INSERT INTO Genders (GenderId, Description) VALUES (0, 'Onbekend');
   INSERT INTO Genders (GenderId, Description) VALUES (1, 'Vrouw');
   INSERT INTO Genders (GenderId, Description) VALUES (2, 'Man');
   INSERT INTO Genders (GenderId, Description) VALUES (3, 'Onzijdig');
   INSERT INTO Genders (GenderId, Description) VALUES (4, 'Vrouwman');
   INSERT INTO Genders (GenderId, Description) VALUES (5, 'Manvrouw');

   SET IDENTITY_INSERT Genders OFF
END
GO

問題

ただし、sqlcmdSQL Server Management Studio のモードで実行すると、次のエラーが発生します。

メッセージ 102、レベル 15、状態 1、行 5 'ON' 付近の構文が正しくありません。

メッセージ 102、レベル 15、状態 1、行 10 'END' 付近の構文が正しくありません。

いくつかグーグルで検索しましたが、何が間違っているのかわかりません。IF/BEGIN/END がなくても動作しますが、最初にチェックを実行するのが好きです。

質問:

  • 私が間違っていることはありますか?
  • 不可能な場合、回避策はありますか?

前もって感謝します!!

4

1 に答える 1

6

GOとの中にBEGIN含めることはできませんEND。フォローしてみてください

SET IDENTITY_INSERT Genders ON

IF (SELECT COUNT(*) FROM Genders)=0
BEGIN
   PRINT N'Seeding table Genders...'

   INSERT INTO Genders ...

END

SET IDENTITY_INSERT Genders OFF
GO
于 2012-03-22T09:30:39.860 に答える