调用接口导出报表 PDF 报错:索引中丢失 IN 或 OUT 参数:: 1
//———- 核心代码————-
Context cxt = new Context();
// 设置数据库连接
Connection con = null;
try {
Driver driver = (Driver) Class.forName(dbDrive).newInstance();
DriverManager.registerDriver(driver);
con = DriverManager.getConnection(conUrl, dbUsername, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
String defDsName = reportDesignDbName;
// 设置数据源
if (defDsName != null) cxt.setConnection(defDsName, con);
// 读入报表
ReportDefine rd = (ReportDefine) ReportUtils.read(sourcefilepath);
// 设置参数
if(pmd != null){
for(int i = 0, count = pmd.getParamCount(); i < count; i ++ ) {
String paramOrMocrName = pmd.getParam(i).getParamName(); // 获取参数名
cxt.setParamValue(paramOrMocrName, mapPar.get(paramOrMocrName)); // 设参数值
}}
// 启动报表运算
Engine engine = new Engine(rd, cxt);
IReport iReport = engine.calc();
// 导出 PDF
ReportUtils.exportToPDF(fileName, iReport);
//——————–日志—————————-
[2023-08-14 11:18:53]
INFO: 开始运算报表,首先取数……
[2023-08-14 11:18:53]
DEBUG: 下面开始打出 sql
[2023-08-14 11:18:53]
DEBUG: proc arg count:2
[2023-08-14 11:18:53]
DEBUG: ds1={call testreport(?,?)}
- [2023-08-14 11:18:53]
- DEBUG: arg1: COS
-
索引中丢失 IN 或 OUT 参数:: 1
错误来源:索引中丢失 IN 或 OUT 参数:: 1
请教:存储过程 testreport(?,?) 第一个是输出的游标,第二个是入参。设置参数那个位置只取到了一个参数,日志打印“proc arg count:2”,请问是不是设置参数那里代码写的有问题,改怎么写?
oracle 数据库? 在数据集参数表达式那块,前边有几个问号,要有几个参数表达式 ,有两个问号的话要是两个,然后第一个是输出游标,表达式是 @@result,第二个就是正常的那个入参
代码中需要设置数据库类型
DataSourceConfig dsoc = new DataSourceConfig(DBTypes.getDBType(“oracle”), true, “GBK”, “GBK”, false);
cxt.setDataSourceConfig(defDsName, dsoc);