T-SQL und das Semikolon als Befehlsende
In der Liste der "Deprecated Features" in SQL Server 2008 findet sich ein Eintrag, der wohl jeden erfahrenen T-SQL Programmierer aufhorchen lässt:
Category: Transact-SQL
Deprecated Feature: Not ending Transact-SQL statements with a semicolon.
Replacement: End Transact-SQL statements with a semicolon ( ; ).
Das heißt, in Zukunft muss jedes T-SQL Statement mit einem Semikolon abgeschlossen werden. Das bedeutet, dass irgendwann in Zukunft 100% aller SQL Skripte geändert werden müssen. Zur Beruhigung: Diese Zukunft, in der SQL Statements ohne Semikolon ungültig sind ist aus Kompatibilitätsgründen noch weit weg. Aber sie wird kommen. Erste Anzeichen gibt es schon, so muss ein MERGE-Statement schon in SQL 2008 mit einem Semikolon beendet werden.
Warum nun aber diese Forderung?
Grund 1: Der ANSI-SQL-92 Standard
Der sagt schlicht, dass ein SQL Statement mit einem Semikolon abzuschließen ist. In BNF sieht das so aus:
direct_sql_stmt
::=
directly_exec_stmt ";"
Grund 2: Uneindeutigkeiten und weniger Empfindlichkeit gegen Schreibfehler:
select 1sp_who
go
select 1 sp_who
go
select 1; sp_who
Grund 3: Klarere, lesbarere Syntax
Ich werde daher langsam damit anfangen, meine Skripte mit Semikolons zu versehen.
Gruß,
Steffen
Comments
Anonymous
June 20, 2008
Hallo Steffen, Wie sieht es mit dem "GO" Befehl aus? Wird dieser auch als "Deprecated Feature" gekennzeichnet? Gruß Christian Antwort: Nein. GO schließt ja auch einen Batch ab, nicht einen Befehl Gruß,
SteffenAnonymous
June 20, 2008
The comment has been removedAnonymous
June 25, 2008
The comment has been removed