時々、セミコロン ';'で始まるSQL Server文があります。まさにそこにあるのはなぜ';' TSQL文の冒頭で
;WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3
ORDER BY (SELECT 0)) RN
FROM #MyTable)
DELETE FROM cte
WHERE RN > 1
以下のような他の例では、;THROW
は 'は;' TSQL文の先頭
アップデート1:
私が求めていますので注意してください ';'ステートメントの冒頭に。この質問は、この1
When should I use semicolons in SQL Server?
の複製されていないアップデート2:
@MartinSmithの答えは、理にかなっています。
だけで、私たちはこの記事のために完全な答えを持っていることを確認し、この尊敬の記事を検討するために:あなたは自分自身に言っているかもしれません。この時点で
http://www.sommarskog.se/error_handling/Part1.html#jumpTHROW
を:彼は私の の足を引っ張っする必要があります、Microsoftは実際にコマンドを呼び出しましたか? スルー? True、Books Onlineで検索すると、先頭に セミコロンはありません。しかしセミコロンはそこになければなりません。正式には、前のステートメントの終端文字は ですが、オプションです.は誰でもセミコロンを使用してT-SQLステートメントを終了します。
私は@MartinSmithの答えに同意しますが、それは非常に極端なレベルに陥っているようです。
通常、ストアドプロシージャTHROWは、独自の行によるステートメントです。 SQL開発者は、単にそのようなSQL行をマージするだけでなく、セミコロンを見逃してしまいます。
私には、人々が誤ってTSQL
の別の行に「THROW」ステートメントを混合よりも、テーブルをドロップより多くのチャンスがあり起こり、極端な珍しい何か上記の引用で説明したケースですか?または私はここでポイントを逃している?
ありがとうございました。私の更新されたコメントにあなたを共有することができるでしょうか? –
@AllanXu - はい私はあなたの感情に ';スルー"の意見に同意します - この練習は私がウェブ上のコードサンプルについて考えているものです。私自身のソースコードではありません。正しいことは、前述のステートメント(および理想的にはすべてのステートメント)をセミコロンで終了させることです。 –