The answer is no, but I saw something interesting when I was finding out (sometimes a one minute experiment is more effective than looking up behavior on books online).
I ran the following:
exec sp_executesql N'select 1 go select 2 go' |
Now, before reading further try to guess what the results are (or the error message).
I was surprised with the these results:
/*
go
-----------
1
go
-----------
2
*/ |
Which was unexpected. The query worked! But it treated the “go” keywords as column aliases. Of course if you were to do any one of the following:
- Redefine your batch separator.
- Use semicolons after the select statements
- Add column aliases to these queries
Then you do get the expected error:
/*
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'go'.
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near 'go'.
*/ |
So sp_executesql does not handle batch separators (i.e. GO).