【问题标题】:SSRS error must declare scalar variable when using ODBC connection to SQL SERVER使用 ODBC 连接到 SQL SERVER 时,SSRS 错误必须声明标量变量
【发布时间】:2015-11-20 14:56:04
【问题描述】:

我有一个 SSRS 数据集查询,其中包含一个名为 BENEFIT 的单值参数。我的数据源是 SQL SERVER 2014:以下查询给出错误“错误 [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]必须声明标量变量“@BENEFIT”。

SELECT  c.BENEFIT  FROM  CLAIM AS c
WHERE c.DOWNLOAD_DATE > '20150701' AND c.BENEFIT = (@ BENEFIT)

该错误仅在使用 ODBC 连接时存在,并使用直接连接消失。如果没有参数,查询将使用任一连接方法正确解析。

任何想法表示赞赏。

谢谢, 阿拉斯代尔

【问题讨论】:

    标签: reporting-services parameters dataset odbc sql-server-2014


    【解决方案1】:

    ODBC 不支持命名参数,请尝试将参数名称更改为?

    SELECT c.BENEFIT FROM CLAIM AS c WHERE c.DOWNLOAD_DATE > '20150701' AND c.BENEFIT = ?

    更多信息在这里:https://msdn.microsoft.com/en-us/library/yy6y35y8(v=vs.90).aspx

    请注意“通过 OleDbCommand 或 OdbcCommand 使用参数”部分。

    【讨论】:

    • 嗨 iDrian - 这是一个 SSRS 数据集查询。我更新了我的文字以更清晰!
    • @Holdfast4 我明白,但我的回答仍然有效。来自任何来源的 ODBC 连接不支持命名参数。请尝试我上面推荐的方法。
    • 谢谢这确实有效。我会避免使用 ODBC。有趣的是,水晶报表将解析和替换命令对象(数据集)中的命名参数。看来 SSRS 在这方面还不够发达。
    【解决方案2】:

    SET NOCOUNT ON 在查询之前,然后在查询之后 SET NOCOUNT OFF 如果您在查询中声明变量。如果变量在查询之外声明,则使用 ?,如 PicoDeGallo 所述。

    【讨论】:

    • 不起作用。您无法摆脱 ODBC 驱动程序的限制。与代码或查询无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多