有没有人试图用H2数据库创建存储过程?如何使用H2数据库创建存储过程?
回答
要访问Java函数中的数据库,您确实需要连接。对于H2,有两种方法可以获得此类连接:
解决方案1 :如果Java函数的第一个参数是java.sql.Connection
,则数据库提供连接。对于SQL,这是一个'隐藏'参数,这意味着你不能也不需要明确设置它。记录如下:User-Defined Functions and Stored Procedures,“需要连接的功能”。例如:
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和甲骨文的兼容性,您可以打开使用DriverManager.getConnection("jdbc:default:connection")
的Java函数中的一个新的连接。此功能在H2版本1.3.151及更新的版本中可用,并且默认情况下它是禁用的。要启用它,请附加;DEFAULT_CONNECTION=TRUE
to the database URL。这是一个有问题的功能,因为如果Oracle驱动程序在H2驱动程序之前加载,Oracle JDBC驱动程序将尝试解析此数据库URL。因此,如果加载Oracle驱动程序,基本上不能使用该功能(我认为这是Oracle驱动程序中的一个错误)。
当你完成它们时总是关闭你的语句...声明s = conn.createStatement();尝试{返回s.executeQuery(sql);}终于{s.close();} – jcalfee314 2013-08-05 19:20:51
对于H2(这是关于H2),没关系,如果你关闭该声明与否。但是,一般来说,声明应该被关闭。 – 2013-08-05 19:47:23
@Thomas Mueller你的文档例子很差,你会把一个CRUD例子 – Dunken 2016-03-29 10:47:50
- 1. H2数据库中的存储过程
- 2. 如何创建存储过程来创建数据库
- 3. 存储过程中的H2数据库选择数据
- 4. 使用h2数据库创建表格
- 5. 如何在存储过程中使用模式创建新的数据库?
- 6. 在H2数据库中写入复杂的存储过程
- 7. 如何用hibernate创建存储过程?
- 8. H2数据库存储容量
- 9. 创建通用存储库从存储过程返回数据与EFCore
- 10. 如何在H2中创建过程
- 11. 使用存储过程创建存储过程
- 12. 如何从存储过程中创建存储过程
- 13. 如何使用Nvarchar(max)参数创建CLR存储过程?
- 14. 如何使用PyOrient在OrientDB中创建函数(存储过程)?
- 15. ASP.NET - 使用Oracle 9i数据库/数据库存储过程
- 16. 从存储过程中创建新数据库
- 17. 重新创建mysql数据库结构和存储过程
- 18. 插入存储过程不创建数据库记录
- 19. 在另一个数据库中创建存储过程
- 20. 存储过程使用临时表创建数据透视表
- 21. 如何从phpMyAdmin的数据库使用存储过程
- 22. 如何使用存储过程轮询数据库?
- 23. 如何使用存储过程更新数据库字段表?
- 24. 在h2数据库上创建视图
- 25. H2数据库 - 创建索引
- 26. 休眠 - H2数据库未创建
- 27. H2数据库主键上创建
- 28. 使用MySQL创建MySQL存储过程
- 29. TSQL创建存储过程使用c#
- 30. 使用变量创建存储过程
我使用Java函数的问题与[this one]不同(http://stackoverflow.com/questions/3098905/how-to-create-stored-procedure-using-h2-database)。我不知道如何在这样的函数中访问表(创建连接在那里没有意义,是吗?)? – maaartinus 2011-03-18 12:06:31
查看手册总是很有帮助:[H2:用户定义的函数和存储过程](http://www.h2database.com/html/features.html#user_defined_functions) – NullUserException 2010-10-07 03:52:48