我已经安装了Eclipse IDE并创建了BIRT项目。我已成功为MySQL连接器添加了jdbc并创建了一个成功通过的数据源。
当我创建依赖存储过程的数据集时,我收到一条错误,指出:
无法设置preparedStatement参数的int值。 SQL错误#1:参数索引超出范围(1>参数个数,为0)
我不知道为什么会收到此错误。
我通过MySQL Workbench直接执行我的SP:
call getUserForCity(1);
我得到了一些结果,大约100行。我已尝试使用硬编码值和单独的参数值,在这两种情况下我都有相同的异常。
答案 0 :(得分:1)
以下是捕获,我还将解释在BIRT中配置数据集的完整过程。
成功创建MySQL数据库的数据源后,下一步是创建一个或多个依赖MySQL存储过程的数据集。
在数据资源管理器上右键单击数据集,然后选择新数据集。在对话框窗口中,选择适当的数据源,为数据集指定名称,并从数据库中选择两种可能的选项之一:查询或存储过程。
无论您选择哪种选项,配置参数的方式都是相同的。在查询编辑器中,编写用于调用存储过程的代码,如下所示:
call procedure_name(?, ?, ?, ...);
其中'?'符号与程序期望的参数数量有关。 在数据集配置窗口中,选择参数选项以定义数据集接受的所有参数。已定义参数的顺序必须与存储过程参数的顺序相同,否则可能会出现错误或不合适的结果。
另外,如果要用另一个参数的值填充数据集参数(通常通过另一个数据集填充),可以在参数窗口中设置此选项,选择链接到报告参数部分中的可用参数之一>
答案 1 :(得分:0)
您收到错误是因为存储过程的预期参数数量为0,而不是在没有参数的情况下调用,而是传递参数。您需要修改存储过程以期望和处理参数,或者在没有参数的情况下调用它。