¿Alguien ha intentado crear procedimientos almacenados usando la base de datos H2?¿Cómo crear un procedimiento almacenado usando la base de datos H2?
Respuesta
Para acceder a la base de datos dentro de una función Java, necesita una conexión. Para H2, hay dos maneras de obtener una conexión de este tipo:
Solución 1: Si el primer parámetro de la función de Java es una java.sql.Connection
, a continuación, 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 establecerlo explícitamente. Esto está documentado: User-Defined Functions and Stored Procedures, "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 la compatibilidad con Apache Derby y Oracle, puede abrir una nueva conexión dentro de la función de Java utilizando DriverManager.getConnection("jdbc:default:connection")
. Esta función está disponible en la versión H2 1.3.151 y posteriores, y está deshabilitada de manera predeterminada. Para habilitarlo, añada ;DEFAULT_CONNECTION=TRUE
to the database URL. Es una característica problemática porque el controlador JDBC de Oracle intentará resolver la URL de esta base de datos si se carga antes del controlador H2. Así que, 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).
siempre cierre sus declaraciones cuando haya terminado con ellas ... Statement s = conn.createStatement(); try {return s.executeQuery (sql);} finally {s.close();} – jcalfee314
Para H2 (y esto es aproximadamente H2) no importa si se cierra la declaración o no. Pero sí, en general, la declaración debe ser cerrada. –
@Thomas Mueller sus ejemplos de documentación son tan pobres pondría un ejemplo de CRUD – Dunken
- 1. Procedimiento almacenado en la base de datos H2
- 2. Crear procedimiento almacenado en otra base de datos
- 3. Usar la base de datos dentro de un procedimiento almacenado
- 4. Magento: Crear procedimiento almacenado
- 5. Probar el procedimiento almacenado sin afectar la base de datos
- 6. ¿Cómo programar un procedimiento almacenado?
- 7. Cómo crear un procedimiento almacenado dentro de otro procedimiento almacenado en SQL Server 2008
- 8. Crear procedimiento almacenado en MS Access?
- 9. ¿Crear procedimiento almacenado y SQLite?
- 10. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 11. Crear todo el conjunto de datos del procedimiento almacenado existente
- 12. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 13. Cómo ejecutar un procedimiento almacenado de Oracle a través de un enlace de base de datos
- 14. Cómo guardar un procedimiento almacenado?
- 15. ¿Cómo desactivo los resultados de la consulta al ejecutar un procedimiento almacenado desde un procedimiento almacenado?
- 16. ¿Cómo crear un procedimiento almacenado MySQL desde PHP?
- 17. ¿Cómo selecciono un procedimiento almacenado en Sybase?
- 18. ¿Cómo ejecutar la base de datos H2 en modo servidor?
- 19. Conexión JPA con la base de datos H2
- 20. Cómo crear una base de datos h2 desde algunos campos de un archivo CSV
- 21. Transacción de procedimiento almacenado
- 22. llamada de Oracle procedimiento almacenado Usando createNativeQuery
- 23. ¿Cómo ejecutar un procedimiento almacenado de Oracle?
- 24. ¿Cómo suprimo los resultados de un procedimiento almacenado dentro de un procedimiento almacenado?
- 25. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 26. cómo configurar un procedimiento almacenado para acceder a una tabla en otra base de datos
- 27. Restablecer la base de datos H2 incrustada periódicamente
- 28. t-sql procedimiento almacenado crear scripts
- 29. ¿Cómo puedo usar un procedimiento almacenado en una base de datos MySql con Zend Framework?
- 30. h2 (modo integrado) presenta un problema de base de datos
Mi problema con el uso de funciones de Java es diferente de [este] (http://stackoverflow.com/questions/3098905/how-to-create-stored-procedure-using-h2-database). No sé cómo acceder a las tablas en esa función (crear una conexión no tiene sentido allí, ¿verdad?) – maaartinus
Siempre es útil mirar el manual: [H2: Funciones definidas por el usuario y procedimientos almacenados] (http://www.h2database.com/html/features.html#user_defined_functions) – NullUserException