In this blog post, let’s learn about the error message “Incorrect syntax near the keyword ‘with’. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.” in Microsoft SQL Server, the reason why it appears and the solution to fix it.
SQL Server Error Message
Incorrect syntax near the keyword ‘with’. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. – 16
Reason for the Error
The SQL Server error message 319 – “Incorrect syntax near the keyword ‘with’. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon” occurs when there is a syntax error in the SQL statement, specifically when the WITH keyword is used incorrectly.
The WITH keyword is used to specify common table expressions, XML namespaces, or change tracking contexts in SQL Server. When using the WITH keyword, it is important to ensure that the previous statement is terminated with a semicolon.
For example, consider the following SQL statement:
WITH cte AS ( SELECT * FROM my_table ) SELECT * FROM cte
If this statement is the first statement in a batch, then it will execute without error. However, if there is a previous statement in the batch that is not terminated with a semicolon, then the error message 319 will occur.
Solution
To fix this error, you can add a semicolon at the end of the previous statement in the batch, like this:
SELECT * FROM my_table; WITH cte AS ( SELECT * FROM my_table ) SELECT * FROM cte
By adding the semicolon at the end of the previous statement, you are telling SQL Server that the previous statement has ended and that the next statement can begin. This will prevent the error message 319 from occurring and allow the SQL statement to execute successfully.