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