.NET Error with Dynamic T-SQL

Posted by Phillip Theriault on Stack Overflow See other posts from Stack Overflow or by Phillip Theriault
Published on 2012-06-02T04:54:28Z Indexed on 2012/09/29 9:37 UTC
Read the original article Hit count: 239

I am trying to create a TableAdapter in .NET using a stored procedure, but I'm getting an error "Incorrect syntax near the keyword 'WHERE'".

I have narrowed down the problem in the stored procedure to the following lines:

IF @NumRows > 0
    SET @SQL += N' WHERE T1.RowNumber BETWEEN 1 and 10'
ELSE
    SET @SQL += N' WHERE T1.RowNumber > 0'

@NumRows is an input parameter that defaults to 0.

However, if I remove either of those lines everything works fine (both WHERE clauses work fine by themselves when there is no IF/ELSE statement). It almost looks like .NET is ignoring the IF/ELSE and attempting to add the WHERE clause twice.

It also works fine if I change it like so:

IF @NumRows > 0
    SET @SQL += N''
ELSE
    SET @SQL += N' WHERE T1.RowNumber > 0'

One of the WHERE clauses has been removed, and there's no longer a conflict on the .NET side. So I'm pretty sure it has to do with the 2 WHERE clauses, and not with anything else.

The sproc runs perfectly fine in SQL Server, and it even runs in .NET despite the error if I click "Preview Data". The only problem is that it won't auto-populate the list of fields, which I need for creating a report.

Has anybody seen this before and have a suggestion?

© Stack Overflow or respective owner

Related posts about c#

Related posts about sql-server