Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何使用H2数据库创建存储过程?_Database_Stored Procedures_H2 - Fatal编程技术网

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

Database 如何使用H2数据库创建存储过程?,database,stored-procedures,h2,Database,Stored Procedures,H2,有人尝试过使用H2数据库创建存储过程吗?要在Java函数中访问数据库,您确实需要连接。对于H2,有两种方法可以获得这样的连接: 解决方案1:如果Java函数的第一个参数是Java.sql.Connection,则数据库提供连接。对于SQL,这是一个“隐藏”参数,这意味着您不能也不需要显式地设置它。这被记录为:,“需要连接的函数”。例如: CREATE ALIAS QUERY AS $$ ResultSet query(Connection conn, String sql) throws SQL

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

要在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兼容,您可以使用
DriverManager.getConnection(“jdbc:default:connection”)
在Java函数中打开一个新连接。此功能在H2版本1.3.151及更新版本中可用,默认情况下已禁用。要启用它,请附加
;默认连接=TRUE
。这是一个有问题的特性,因为如果在H2驱动程序之前加载该数据库URL,Oracle JDBC驱动程序将尝试解析该数据库URL。所以基本上,如果加载了Oracle驱动程序,就不能使用这个特性(我认为这是Oracle驱动程序中的一个错误)。尝试{return s.executeQuery(sql);}最后{s.close();}对于H2(这是关于H2的),不管是否关闭语句。但是,是的,通常情况下,该语句应该关闭。@Thomas Mueller您的文档示例太差了,您会使用CRUD吗examples@ThomasMueller我想是的我要求你加强H2数据库的文档并放置CRUDexamples@ThomasMueller,我正在努力理解我在哪里编写了您建议作为解决方案1的代码块。如果我将其粘贴到java类中,那么它就不会将
createaliasquery作为$
识别为有效的java。我尝试编写整个代码块,如
ResultSet rs=st.executeQuery(“如果不存在,则创建别名查询作为$$\n”+”ResultSet查询(连接连接,字符串sql)..
但是我遇到了一个语法错误。我错过了什么Thomas?谢谢你的时间。阅读手册总是有帮助的:我使用Java函数的问题不同于。我不知道如何在这样的函数中访问表(创建连接没有意义,是吗)?