Java - выполнить хранимую процедуру - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно выполнить процедуру из sql с использованием Java.

Я вызвал мою процедуру в управлении sql, как exec MyProcedure, и работает хорошо.Но когда я использую его в коде Java, я получаю сообщение об ошибке:

Оператор не возвращает набор результатов.

Это мой код:

    ResultSet rs = null;
    PreparedStatement cs=null;
    Connection conn=DbM.dbConnect();

    try {
        cs= conn.prepareStatement("exec MyProcedure ?,?,?");
        cs.setEscapeProcessing(true);
        cs.setQueryTimeout(90);

        cs.setString(1, "1");
        cs.setString(2, "2019-01-01");
        cs.setString(3, "2019-02-02");

        rs = cs.executeQuery();
        ArrayList<Data> listaObjectX = new ArrayList<Data>();
        while (rs.next()) {

            Data to = new Data();
            to.setEmployeNo(rs.getString(1));
            to.setValidFrom(rs.getDate(2));
            to.setValidTo(rs.getDate(3));

            listaObjectX.add(to);

        } } catch (SQLException se) {
            System.out.println("Error al ejecutar SQL"+ se.getMessage());
            se.printStackTrace();
            throw new IllegalArgumentException("Error al ejecutar SQL: " + se.getMessage());

        } finally {

            try {

                rs.close();
               cs.close();
                conn.close();;

            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }

При выполнении кода я получил ошибку:

Оператор не возвратил набор результатов.

Есть идеи, как решить эту проблему?

Если я поставлю cs = conn.prepareStatement ("exec MyProcedure (?,?,?)");Я получаю ошибку

Неверный синтаксис рядом с '@ P0'

1 Ответ

0 голосов
/ 06 февраля 2019

Если эта процедура не возвращает результат, вы должны использовать execute () вместо executeQuery (), который, как ожидается, всегда будет возвращать ResultSet.

...