【问题标题】:BIRT report dataset based on SP error基于SP错误的BIRT报告数据集
【发布时间】:2016-01-28 14:23:15
【问题描述】:

我已经安装了 Eclipse IDE 并创建了 BIRT 项目。我已经成功为MySQL连接器添加了jdbc并创建了一个数据源,成功通过了。

当我创建将依赖存储过程的数据集时,我收到一条错误消息:

无法设置preparedStatement 参数的int 值。 SQL错误#1:参数索引超出范围(1>参数个数,为0)

我不知道为什么会收到此错误。

我像这样通过 MySQL Workbench 直接执行我的 SP:

call getUserForCity(1);

我得到了一些结果,大约 100 行。我已经分别尝试了硬编码值和参数值,在这两种情况下我都有相同的异常。

【问题讨论】:

    标签: eclipse dataset report birt


    【解决方案1】:

    这里是关键,我也将解释在 BIRT 中配置数据集的完整过程。

    成功创建 MySQL 数据库的数据源后,下一步是创建一个或多个依赖于 MySQL 存储过程的数据集。

    Data Explorer 上右键单击 Dataset 并选择 New Dataset。在对话框窗口中,选择适当的数据源,为数据集命名,然后选择从数据库中获取数据的两个可能选项之一:查询存储过程

    无论您选择什么选项,配置参数的方式都是一样的。在查询编辑器中编写调用存储过程的代码,如下所示:

    call procedure_name(?, ?, ?, ...);
    

    '?' 的数量在哪里?标志与程序期望的参数数量有关。 在数据集配置窗口中,选择 Parameters 选项来定义数据集接受的所有参数。定义参数的顺序必须与存储过程参数的顺序相同,否则会出现错误或不适当的结果。

    此外,如果您想用另一个参数的值填充您的数据集参数(通常通过另一个数据集填充),您可以在参数窗口中设置此选项,在 链接到报告参数部分中选择一个可用参数>.

    【讨论】:

    • 嗨!我注意到this edit of yours。请确保您只编辑实际答案。这显然不是一个答案。抛光便便是浪费精力,并且对非答案帖子的编辑会清除该帖子上的非答案标志:) 如果您已阅读此内容,请告诉我,然后我将其删除(这是您最新的回答,这就是我在这里评论的原因)。
    【解决方案2】:

    您收到错误是因为您的存储过程的预期参数数量为 0,而不是在没有参数的情况下调用您正在传递一个参数。您需要修改存储过程以期望和处理参数,或者在没有参数的情况下调用它。

    【讨论】:

    • 不,事实并非如此,因为我的 SP 期望并接受一个参数。例如,当我在 MySQL Workbench 中使用call getUserForCity(1); 执行我的 SP 时,我得到 100 行,因此 SP 必须接受一个参数。
    • @veljasije,您确定要调用您正在谈论的存储过程吗?您是否使用了正确的数据库等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多