Как вызвать хранимую процедуру в Oracle Apache Beam? - PullRequest
0 голосов
/ 25 января 2019

Я просто пытаюсь изучить Apache Beam и возвращаю данные из базы данных оракула.Мне удалось настроить базовое подключение и вернуть некоторые данные, но мне нужно вызвать сохраненный процесс перед выполнением запроса sql, чтобы вернуть мои данные (сохраненный процесс устанавливает контекст запроса, чтобы ограничить данные, возвращаемые определенным разделом)

Я попытался добавить второй оператор .withQuery, но это не работает.Код не возвращает ошибку, но возвращает данные из всех разделов

Pipeline p = Pipeline.create(options);

PCollection<List<String>> rows p.apply(JdbcIO.<List<Strng>>read()
    .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(
        "oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@server")
        .withUsername("uname")
        .withPassword("pword")
        )
    .withQuery("call procname(partitionid)")
    .withQuery("Select * from table")
    .withCoder(ListCoder.of(StringUtf8Coder.of()))
    .withRowMapper(new JdbcIO.RowMapper<List<String>>(){
        public List<String> mapRow(ResultSet resultSet) throws Exception {
            List<String> addRow = new ArrayList<String>();
            for(int i=1; i<= resultSet.getMetaData().getColumnCount();i++)
            {
                addRow.add(i-1, String.valueOf(resultSet.getObject(i)));
            }
        return addRow;
    }
 }
...