Incorrect syntax near the keyword 'WITH'

Armonds
Member Posts: 66
Just want to share info.
I'm was creating SQL Query to launch from Navision with ADO. The Query was some thing like:
In SQL Management Studio this query executed without problems, but when launching from Navision I got error Message:
"The call to member Execute failed. Microsoft OLE DB Provider for SQL Server returned the following message:
Incorrect syntax near the keyword 'WITH'."
The solution was simple, but I doubt I would find it without help of Google
All what was needed was adding semicolon before WITH. This code works fine:
May be someone can explain the solution...
I'm was creating SQL Query to launch from Navision with ADO. The Query was some thing like:
WITH CONTR AS ( SELECT CT.[No_],CT.[Customer Name],CT.[Address], ROW_NUMBER() OVER (ORDER BY [No_]) AS RowNumber FROM dbo.Contracts CT ) SELECT * FROM CONTR WHERE RowNumber BETWEEN 1 AND 10
In SQL Management Studio this query executed without problems, but when launching from Navision I got error Message:
"The call to member Execute failed. Microsoft OLE DB Provider for SQL Server returned the following message:
Incorrect syntax near the keyword 'WITH'."
The solution was simple, but I doubt I would find it without help of Google

;WITH CONTR AS ( SELECT CT.[No_],CT.[Customer Name],CT.[Address], ROW_NUMBER() OVER (ORDER BY [No_]) AS RowNumber FROM dbo.Contracts CT ) SELECT * FROM CONTR WHERE RowNumber BETWEEN 1 AND 10
May be someone can explain the solution...
0
Comments
-
The reason is explained on how you connect to SQL through NAV.
If you use "Provider=SQLNCLI;" in the connection string it will work. This uses the native SQL driver, so you need to install it (don't remember though what exactly you need to install). If you install SSMS, it will work.
If you use "Provider=SQLOLEDB;" in the connection string it will NOT work. But to use this, you DON'T need to install anything.Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
From SQL Server 205 Books OnlineWITH common_table_expression (Transact-SQL)
....
When a CTE is used in a statement that is part of a batch, the statement before it must be followed by a semicolon.
Just a wild guess...
SlawekSlawek Guzek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-030
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions