Недопустимая хранимая процедура Java / Oracle, созданная без исключений SQLExceptions

У меня есть следующий код Java, который создает хранимую процедуру. Чтобы проверить это, я намеренно передаю недействительный sql:

public void createStoredProcedure(@NotNull final StoredProcInfo storedProcInfo, @NotNull final ColumnInfoFactory columnInfoFactory, @NotNull final Connection con) {
    Statement createProcStmt = null;
    try {
      List<String> parameterDefinitions = Lists.newArrayList();
      for (StoredProcParmInfo parmInfo : storedProcInfo.getInParameters()) {
        parameterDefinitions.add(columnInfoFactory.generateParameterDefinition(parmInfo));
      }
      for (StoredProcParmInfo parmInfo : storedProcInfo.getOutParameters()) {
        parameterDefinitions.add(columnInfoFactory.generateParameterDefinition(parmInfo));
      }
      String createProcSql = String.format("CREATE Procedure %s (%s) AS BEGIN %s END;", storedProcInfo.getName(), StringUtils.join(parameterDefinitions.iterator(), ","), storedProcInfo.getBody());
      createProcStmt = con.createStatement();
      createProcStmt.execute(createProcSql);
    } catch (Exception e) {
      throw new RuntimeException(e);
    } finally {
      Closer.close(createProcStmt, logger);
    }
  }

Метод выполняется успешно. И когда я смотрю в базу данных, я вижу, что хранимая процедура была создана, но помечена как недопустимый объект:

И ошибка в том, что в теле процедуры ожидалось предложение INTO:

Почему SQLException не было выброшено, когда код, который создал процедуру, был выполнен? Это настройка драйвера Oracle? Я искал в Интернете, но не нашел никакой полезной информации.

0 ответов

Другие вопросы по тегам