title: Exception : Callable statement did not return any value
body: <p>I have written a java code to call a stored procedure which returns some data. Following is the code - </p>
  
  <pre><code>  CallableStatement callableStatement = null;
      List&lt;OutputDTO&gt; outputDTOList = new LinkedList&lt;&gt;();
      ResultSet rs = null;
      String query = "{call Get_DailyCampaignReachReport (?,?,?,?,?,?,?,?,?)}";
      try {
          callableStatement = connMan.getReportingDbConnection().prepareCall(query);
          Integer[] data = inDTO.getCampaignId().toArray(new Integer[inDTO.getCampaignId().size()]);
  
          callableStatement.setDate(1, new Date(inDTO.getStartDate().toDate().getTime()));
          callableStatement.setDate(2, new Date(inDTO.getEndDate().toDate().getTime()));
          callableStatement.setArray(3, connMan.getReportingDbConnection().createArrayOf("integer", data));
          callableStatement.setInt(4, inDTO.getNetworkId());
  
          callableStatement.registerOutParameter(5, java.sql.Types.DATE);
          callableStatement.registerOutParameter(6, java.sql.Types.INTEGER);
          callableStatement.registerOutParameter(7, java.sql.Types.INTEGER);
          callableStatement.registerOutParameter(8, java.sql.Types.BIGINT);
          callableStatement.registerOutParameter(9, java.sql.Types.BIGINT);
  
          boolean results = callableStatement.execute();
          while (results) {
              rs = callableStatement.getResultSet();
              while(rs.next()){
                  OutputDTO outputDTO = new OutputDTO();
                  outputDTO.setDate(new DateTime(rs.getDate(1).getTime()));
                  outputDTO.setCampaignId(rs.getInt(2));
                  outputDTO.setNetworkId(rs.getInt(3));
                  outputDTO.setUniques(rs.getInt(4));
                  outputDTO.setTotal(rs.getInt(5));
                  outputDTOList.add(outputDTO);
              }
              results = callableStatement.getMoreResults();
          }
          collector.setOutputList(outputDTOList);
      } catch (SQLException e) {
          throw new InternalErrorException("runDayReport {" + query + "} - ", e);
      } finally {
          try {
  
              if (null != rs) {
                 rs.close();
              }
  
              if (null != callableStatement) {
                  callableStatement.close();
              }
  
          } catch (SQLException ee) {
              throw new InternalErrorException("Free Resources : runDayReport {"
                      + query + "} - " + ee);
          }
      } 
  </code></pre>
  
  <p>"Get_DailyCampaignReachReport" is the name of the stored procedure. Now when I execute this code I get an exception "Callable statement did not returned any value." This happens when the execute method is called on callablestatement. But I am not able to understand why this is happening. Can anyone help me understand where I am making a mistake? Following is how the stored procedure looks in the DB. </p>
  
  <pre><code>   Schema |             Name             | Result data type |                                                                                  Argument data types                                                                                   |  Type  | Volatility |  Owner   | Language |                                                                                                                                  Source code                                                                                                                                   | Description
  --------+------------------------------+------------------+----------------------------    ------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------+----------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------  -------------------------------------------------------------------------------------------   ------------------+-------------
      public | get_dailycampaignreachreport | SETOF record     | start_date date, end_date date, p_campaign_id integer[], p_network_id integer, OUT sqldate date, OUT campaign_id integer, OUT network_id integer, OUT uniques bigint, OUT total bigint | normal | volatile   | postgres | plpgsql  |                                                                                                                                                                                                                                                                               +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | DECLARE                                                                                                                                                                                                                                                                       +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | where_campaign_id text;                                                                                                                                                                                                                                                       +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | in_values varchar default '';                                                                                                                                                                                                                                                 +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | BEGIN                                                                                                                                                                                                                                                                         +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | IF p_campaign_id NOTNULL THEN                                                                                                                                                                                                                                                 +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | FOR i IN 1..array_upper(p_campaign_id, 1) LOOP                                                                                                                                                                                                                                +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | in_values := in_values || p_campaign_id[i] || ',';                                                                                                                                                                                                                            +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | END LOOP;                                                                                                                                                                                                                                                                     +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | in_values   := substring(in_values FROM 1 FOR character_length(in_values) - 1);                                                                                                                                                                                               +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | where_campaign_id := ' campaign_id IN (' || in_values || ')' ;                                                                                                                                                                                                                +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | END IF;                                                                                                                                                                                                                                                                       +|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | RETURN QUERY EXECUTE 'SELECT sqldate,campaign_id,network_id,users,total FROM campaign_uniques_daily WHERE sqldate BETWEEN ' || quote_literal(start_date) || ' AND ' || quote_literal(end_date) || ' AND network_id = ' || p_network_id || ' AND ' || where_campaign_id || ' ';+|
      |                              |                  |                                                                                                                                                                                        |        |            |          |          | END;           
  </code></pre>