database - uso - ¿Cómo crear un procedimiento almacenado utilizando la base de datos H2?
stored procedure sql server español (1)
¿Alguien ha intentado crear procedimientos almacenados utilizando la base de datos H2?
Para acceder a la base de datos dentro de una función Java, necesita una conexión. Para el H2, hay dos formas de obtener tal conexión:
Solución 1 : Si el primer parámetro de la función de Java es una conexión java.sql.Connection
, la base de datos proporciona la conexión. Para SQL, este es un parámetro ''oculto'', lo que significa que no puede y no necesita configurarlo explícitamente. Esto se documenta: Funciones definidas por el usuario y procedimientos almacenados , "Funciones que requieren una conexión". Ejemplo:
CREATE ALIAS QUERY AS $$
ResultSet query(Connection conn, String sql) throws SQLException {
return conn.createStatement().executeQuery(sql);
} $$;
CALL QUERY(''SELECT * FROM DUAL'');
Solución 2 : para compatibilidad con Apache Derby y Oracle, puede abrir una nueva conexión dentro de la función Java usando DriverManager.getConnection("jdbc:default:connection")
. Esta función está disponible en la versión H2 1.3.151 y posteriores, y está deshabilitada de forma predeterminada. Para habilitarlo, agregue ;DEFAULT_CONNECTION=TRUE
a la URL de la base de datos . Es una característica problemática porque el controlador JDBC de Oracle intentará resolver esta URL de la base de datos si se carga antes que el controlador H2. Básicamente, no puede usar la función si el controlador de Oracle está cargado (considero que esto es un error en el controlador de Oracle).