SanDroid (12/27/2012)
:ermm: You do not know the difference between creating a new TSQL batch and a control flow function? 😛
I don't even know what a control flow function is. All control flow language elements I know are statements: BEGIN...END, BREAK, CONTINUE, GOTO, IF...ELSE, RETURN, THROW, TRY...CATCH, WAITFOR, and WHILE. (See http://msdn.microsoft.com/en-us/library/ms174290.aspx).
If you meant to write controol flow statements, then the answer is yes, obviously I do know the difference between creating a new batch and a control flow statement. I just don't see how that relates to this question of the day.
With all the ";" followed by a "go" in your example code I guess that is no suprise.
I fail to see the relation between properly terminating statements and control-flow language. And you make it sound as if a semicolon before the batch seperator is a bad thing. It is not.
For the record, the semicolon is the statement terminator in T-SQL. Using it has always been allowed, but used to be optional. As of SQL Server 2005 (if I recall correctly), not terminating statements has been put on the deprecated list, meanning it is still supported now, but will not be supported in a future release. It is already to properly terminate every statement that precedes a CTE or a Service Broker query (anything that starts with WITH), and it is also already mandatory to terminate MERGE statements.
Since 2005, I have forced myself to write all new code in the advised form - with semicolons terminating all statements.
Sources: Transact-SQL Syntax Conventions and Deprecated Database Engine Features in SQL Server 2012.
Here is some infomration online you can read...
Thanks for the link. It didn't learn me anything I didn't already know, but it might be useful for other readers of this discussion.
For the record, I always prefer to post links to Books Online or other official Microsoft documentation. If I can't find any of that, my second choice is a blog from one of the people who work on the SQL Server team. The third choice is then a blog, where I still try to limit myself to the most authorative SQL Server authors - people like Kalen Delaney, Paul Randal, Kimberly Tripp, Paul White, and a few others.
Also your red colored quote above is totaly wrong. More than one select can be in any View, but only one batch.
You're right, I should have said: "a view definition has to be a single query". ("query" instead of "select"). Using subqueries, that single query can contain multiple occurrences of the keyword select.
Please tell me you do not need a code example to know the differnce between one select statement and one TSQL batch... :hehe:
No, I don't. I do still need either code examples or a much better explanation to understand why you think that part of the explanation of the question "seems incomplete or missleading". So far, you only managed to confuse me more.