Подтвердить что ты не робот

Как создать хранимую процедуру с использованием базы данных H2?

Кто-нибудь пытался создать хранимые процедуры с использованием базы данных H2?

4b9b3361

Ответ 1

Чтобы получить доступ к базе данных в Java-функции, вам нужно подключение. Для H2 существует два способа получить такое соединение:

Решение 1. Если первым параметром функции Java является java.sql.Connection, база данных обеспечивает соединение. Для SQL это параметр "скрытый", что означает, что вы не можете и не должны его явно указывать. Это документировано: Пользовательские функции и хранимые процедуры, "Функции, требующие подключения". Пример:

CREATE ALIAS QUERY AS $$
ResultSet query(Connection conn, String sql) throws SQLException {
    return conn.createStatement().executeQuery(sql);
} $$;
CALL QUERY('SELECT * FROM DUAL');

Решение 2. Для совместимости с Apache Derby и Oracle вы можете открыть новое соединение в функции Java с помощью DriverManager.getConnection("jdbc:default:connection"). Эта функция доступна в версии H2 версии 1.3.151 и новее, и по умолчанию она отключена. Чтобы включить его, добавьте ;DEFAULT_CONNECTION=TRUE к URL-адресу базы данных. Это проблематичная функция, потому что драйвер JDBC Oracle попытается решить этот URL-адрес базы данных, если он загружен до драйвера H2. Таким образом, вы не можете использовать эту функцию, если загружен драйвер Oracle (я считаю, что это ошибка в драйвере Oracle).