如何使用H2数据库创建存储过程?

时间:2010-06-23 04:17:50

标签: database stored-procedures h2

是否有人尝试使用H2数据库创建存储过程?

1 个答案:

答案 0 :(得分:9)

要在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和Oracle兼容,您可以使用DriverManager.getConnection("jdbc:default:connection")在Java函数中打开新连接。此功能在H2版本1.3.151及更高版本中可用,默认情况下禁用。要启用它,请附加;DEFAULT_CONNECTION=TRUE to the database URL。这是一个有问题的功能,因为Oracle JDBC驱动程序将尝试解析此数据库URL(如果它在H2驱动程序之前加载)。所以基本上你不能在加载Oracle驱动程序时使用该功能(我认为这是Oracle驱动程序中的一个错误)。