2

我正在尝试使用存储过程在 .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 中运行。唯一的问题是它不会自动填充创建报告所需的字段列表。

有没有人见过这个并有一个建议?

4

1 回答 1

1

错误出现在 DataSet ( .xsd) 文件 - 可视化设计器中。右键单击,然后转到Add > TableAdapter,设置数据库连接,选择存储过程,单击到Finish,然后显示错误。它仍然链接到 sproc,并且可以在我单击时运行Preview Data,但它无法确定 sproc 中有哪些字段。当然,我可以手动添加字段,但这似乎是一个不应该存在的愚蠢问题。

于 2012-08-27T17:03:11.807 回答