Недопустимая хранимая процедура 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? Я искал в Интернете, но не нашел никакой полезной информации.