Pentaho

 View Only

 Im trying to create report with dynamic parameters/values But, Pentaho does not support comma delimited values as parameter to Stored_Procedure. I tried using "MultiValueQuery" function but its still not working ?

  • Pentaho
  • Kettle
  • Pentaho
  • Pentaho Data Integration PDI
Chi Shi's profile image
Chi Shi posted 05-05-2020 18:33

Can I get detail documentation of "MultiValueQuery" and "NORMALIZEARRAY" with examples. As I tried using both expressions but its still not populating report.

 

Getting Error 'Incorrect number of arguments for stored procedure expected '

 

Error message as below:

The multi-select input parameter takes multiple selected options as a number of parameters. Error message as shown below:

org.pentaho.reporting.engine.classic.core.ReportDataFactoryException: Failed at query:

CALL Stored-Procedure(${paramsite},${paramyear});

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.queryData(SimpleSQLReportDataFactory.java:189)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SQLReportDataFactory.queryData(SQLReportDataFactory.java:142)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:172)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.cache.CachingDataFactory.queryInternal(CachingDataFactory.java:408)

at org.pentaho.reporting.engine.classic.core.cache.CachingDataFactory.queryStatic(CachingDataFactory.java:151)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:168)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:168)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryData(CompoundDataFactory.java:67)

at org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController.performQueryData(DefaultFlowController.java:256)

at org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController.performSubReportQuery(DefaultFlowController.java:316)

at org.pentaho.reporting.engine.classic.core.states.process.ProcessState.initializeForSubreport(ProcessState.java:566)

at org.pentaho.reporting.engine.classic.core.states.process.InlineSubreportProcessor.processInline(InlineSubreportProcessor.java:72)

at org.pentaho.reporting.engine.classic.core.states.process.ReportHeaderHandler.advance(ReportHeaderHandler.java:44)

at org.pentaho.reporting.engine.classic.core.states.process.ProcessState.advance(ProcessState.java:948)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.processPrepareLevels(AbstractReportProcessor.java:405)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.performStructuralPreprocessing(AbstractReportProcessor.java:553)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.prepareReportProcessing(AbstractReportProcessor.java:467)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.processReport(AbstractReportProcessor.java:1433)

at org.pentaho.reporting.designer.core.actions.report.preview.PreviewPdfAction$ExportTask.run(PreviewPdfAction.java:105)

at java.lang.Thread.run(Unknown Source)

Caused by: java.sql.SQLSyntaxErrorException: (conn=82945) Incorrect number of arguments for PROCEDURE positive_id; expected 2, got 6

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:243)

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:164)

at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:258)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:225)

at org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:145)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeQuery(ClientSidePreparedStatement.java:159)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.performQuery(SimpleSQLReportDataFactory.java:348)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.parametrizeAndQuery(SimpleSQLReportDataFactory.java:323)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.queryData(SimpleSQLReportDataFactory.java:184)

... 22 more

Caused by: java.sql.SQLException: Incorrect number of arguments for PROCEDURE (SP); expected 2, got 6

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1598)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1460)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1423)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:240)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:216)

... 27 more

sampleparameter

 


#PentahoDataIntegrationPDI
#Kettle
#Pentaho
Andrew Cave's profile image
Andrew Cave

Hi Chi,  Are you trying to run the report and passing in a comma-delimited set of parameters or are you trying to call a stored procedure in the database with a comma-delimited string of parameters?

Chi Shi's profile image
Chi Shi

Hi Andrew, Thank you for your response.

Im trying to call a stored procedure in the database with a comma-delimited string of parameters. As the values without comma are considered as string.

below are more details:

 

The multi-select input parameter takes multiple selected options as a number of parameters. Error message as shown below:

org.pentaho.reporting.engine.classic.core.ReportDataFactoryException: Failed at query:

CALL Stored-Procedure(${paramsite},${paramyear});

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.queryData(SimpleSQLReportDataFactory.java:189)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SQLReportDataFactory.queryData(SQLReportDataFactory.java:142)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:172)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.cache.CachingDataFactory.queryInternal(CachingDataFactory.java:408)

at org.pentaho.reporting.engine.classic.core.cache.CachingDataFactory.queryStatic(CachingDataFactory.java:151)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:168)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStaticInternal(CompoundDataFactory.java:168)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryStatic(CompoundDataFactory.java:154)

at org.pentaho.reporting.engine.classic.core.CompoundDataFactory.queryData(CompoundDataFactory.java:67)

at org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController.performQueryData(DefaultFlowController.java:256)

at org.pentaho.reporting.engine.classic.core.states.datarow.DefaultFlowController.performSubReportQuery(DefaultFlowController.java:316)

at org.pentaho.reporting.engine.classic.core.states.process.ProcessState.initializeForSubreport(ProcessState.java:566)

at org.pentaho.reporting.engine.classic.core.states.process.InlineSubreportProcessor.processInline(InlineSubreportProcessor.java:72)

at org.pentaho.reporting.engine.classic.core.states.process.ReportHeaderHandler.advance(ReportHeaderHandler.java:44)

at org.pentaho.reporting.engine.classic.core.states.process.ProcessState.advance(ProcessState.java:948)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.processPrepareLevels(AbstractReportProcessor.java:405)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.performStructuralPreprocessing(AbstractReportProcessor.java:553)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.prepareReportProcessing(AbstractReportProcessor.java:467)

at org.pentaho.reporting.engine.classic.core.layout.output.AbstractReportProcessor.processReport(AbstractReportProcessor.java:1433)

at org.pentaho.reporting.designer.core.actions.report.preview.PreviewPdfAction$ExportTask.run(PreviewPdfAction.java:105)

at java.lang.Thread.run(Unknown Source)

Caused by: java.sql.SQLSyntaxErrorException: (conn=82945) Incorrect number of arguments for PROCEDURE positive_id; expected 2, got 6

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:243)

at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:164)

at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:258)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:225)

at org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:145)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeQuery(ClientSidePreparedStatement.java:159)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.performQuery(SimpleSQLReportDataFactory.java:348)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.parametrizeAndQuery(SimpleSQLReportDataFactory.java:323)

at org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SimpleSQLReportDataFactory.queryData(SimpleSQLReportDataFactory.java:184)

... 22 more

Caused by: java.sql.SQLException: Incorrect number of arguments for PROCEDURE (SP); expected 2, got 6

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1598)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1460)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1423)

at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:240)

at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:216)

... 27 more

Chi Shi's profile image
Chi Shi

Hi Andrew,

Yes Im trying to Pass parameter in both way :

run the report and passing in a comma-delimited set of parameters and trying to call a stored procedure in the database with a comma-delimited string of parameter

Is there a solution on passing multiple dynamic - parameters Via SP for above both situation ?

Looking forward for your reply.