我正在尝试使用存储过程在.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中运行。唯一的问题是它不会自动填充我创建报告所需的字段列表。
以前是否有人见过这个并提出建议?
答案 0 :(得分:1)
错误发生在DataSet(.xsd
)文件中 - 可视化设计器。右键单击,然后转到Add
> TableAdapter
,设置数据库连接,选择存储过程,点击Finish
,然后点击它显示错误。它仍然链接到sproc,并且可以在我单击Preview Data
时运行,但它无法确定sproc中的字段。当然,我可以手动添加字段,但这似乎是一个不应该存在的愚蠢问题。