我正在尝试使用存储过程在 .NET 中创建 TableAdapter,但出现错误“关键字'WHERE'附近的语法不正确”。
我已将存储过程中的问题缩小到以下几行:
IF @NumRows > 0
SET @SQL += N' WHERE T1.RowNumber BETWEEN 1 and 10'
ELSE
SET @SQL += N' WHERE T1.RowNumber > 0'
@NumRows
是一个输入参数,默认为 0。
但是,如果我删除其中任何一行,一切正常(当没有 IF/ELSE 语句时,两个 WHERE 子句都可以正常工作)。看起来 .NET 几乎忽略了 IF/ELSE 并尝试添加 WHERE 子句两次。
如果我像这样更改它也可以正常工作:
IF @NumRows > 0
SET @SQL += N''
ELSE
SET @SQL += N' WHERE T1.RowNumber > 0'
其中一个 WHERE 子句已被删除,.NET 端不再存在冲突。所以我很确定它与 2 WHERE 子句有关,而不是其他任何东西。
sproc 在 SQL Server 中运行得非常好,即使单击“预览数据”时出现错误,它甚至可以在 .NET 中运行。唯一的问题是它不会自动填充创建报告所需的字段列表。
有没有人见过这个并有一个建议?