【问题标题】:In Jaspersoft Studio, Sql server procedure returning fewer fields than expected在 Jaspersoft Studio 中,Sql server 过程返回的字段少于预期
【发布时间】:2016-08-10 15:08:57
【问题描述】:

我在 Jaspersoft Studio (JSS) 中运行 sql server 过程,但查询对话框只显示一个字段。

它在 JSS 中的样子:

在 SQL SERVER Management Studio 中,它可以正常工作。该过程返回十多个字段...

有人见过类似的案例吗?可能会发生什么?

我写了一个java代码来检查,通过jdbc java应用,正常显示所有字段:

 Connection conn = VAGASConnectionFactory.getNewConnectionSQLDRIVER(VAGASConnectionFactory.AMBIENTE.DESENV);
    CallableStatement cs = conn.prepareCall("{call pr_cria_tabela_relatorio_parametrizado(90918)}");
    ResultSet rs = cs.executeQuery();
    while(rs.next()) {
        System.out.println(rs.getString(1) + "," + rs.getString(2) + "," + rs.getString(3) + "," + rs.getString(4));
    }

这段代码运行结果正确:

杰西卡·阿尔巴,28/04/1981,35,康达多

金凯瑞,17/01/1962,54,戈亚纳

但在 Jasper Studio 中,只显示一个字段.... :-/

点击“读取字段”时的 Jasper Studio 日志:

Start ClassPath Mapping
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-chart-themes-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-fonts-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-functions-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-common.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-extra-classes.jar
End ClassPath Mapping

我正在使用 Jasper Studio 6.1.1。我尝试使用 Jasper Studio 6.3.0,也没有成功。

【问题讨论】:

  • @AlexK 我尝试使用与此类似的语法:Call procedure_name ($ P {parm1}, $ P {parm2} ),但没有任何效果。我使用另一个正常工作的存储过程。这只发生在这个过程中。此过程填充一个动态 VARCHAR @SQL (MAX)。最后使用 EXEC 命令运行。我已经尝试过:1) 将 @sql 更改为 varchar (max) - 没有成功 2) 包括 SET ANSI_WARNINGS,并将 SET NOCOUNT 设置为 OFF - 没有成功
  • @AlexK,问题不在于如何从 Jasper Report 中调用存储过程,因为 Jasper Studio 与另一个过程一起正常运行。
  • 我尝试将 JDBC 驱动程序替换为另一个版本,但没有成功 - JDBC 驱动程序是 microsoft.com/pt-br/download/details.aspx?id=11774

标签: sql-server stored-procedures jasper-reports jaspersoft-studio


【解决方案1】:

经过多次尝试,我发现查询编辑器仅限于读取具有复杂存储过程(如我的)的字段。由于我的过程使用游标并在字符串中动态进行 sql 查询,因此查询编辑器会阻碍读取过程方案。

我决定执行以下操作:将查询 SQL 打印到过程输出 (print @sql)。然后我剪切并粘贴在查询编辑器窗口中运行的查询(在过程输出上)(而不是过程调用,“exec 过程 ....”)。因此查询编辑器可以读取查询的字段。查询编辑器读取字段后,我删除查询 SQL 并再次插入过程调用,“exec procedure ....”

现在它起作用了:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多