H2数据库中的存储过程

Abi*_*Abi 8 java stored-procedures h2

我是数据库的新手,最近开始编写H2数据库的测试用例.我想知道如何在Eclipse中测试存储过程.我见过以下内容:

http://www.h2database.com/html/features.html#user_defined_functions

如何在H2中创建程序

h2database链接中给出的示例代码,

"CREATE ALIAS NEXT_PRIME AS $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$;
" 
Run Code Online (Sandbox Code Playgroud)
  • 应该在哪里宣布?以及如何运行它?

PS - 我有H2 JAR文件并正在测试它.

如果有人可以告诉我如何在Java中为H2编写一个简单的存储过程,那将会有很大的帮助.

在H2中还有以下任何等价物吗?

"开始dbms_output"?

谢谢.

tra*_*god 9

你可能忽略了这些例子src/test/org/h2/samples/Function.java.这是一个相关的例子:

Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "");
Statement st = conn.createStatement();
st.execute("CREATE ALIAS getVersion FOR \"org.h2.engine.Constants.getVersion\"");
ResultSet rs;
rs = st.executeQuery("CALL getVersion()");
if (rs.next()) System.out.println("Version: " + rs.getString(1));
Run Code Online (Sandbox Code Playgroud)

安慰: Version: 1.4.191

附录:该功能不仅限于功能; 别名方法可以执行任意Java代码.例如,query()定义的方法Function.java可能是别名并调用,如下所示:

Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "");
Statement st = conn.createStatement();
st.execute("CREATE ALIAS query FOR \"cli.Function.query\"");
rs = st.executeQuery("CALL query('SELECT NAME FROM INFORMATION_SCHEMA.USERS')");
while (rs.next()) {
    System.out.println("User: " + rs.getString(1));
}
Run Code Online (Sandbox Code Playgroud)

安慰: User: SA

请注意,这cli.Function.query是一个副本org.h2.samples.Function.query.


raj*_*esh 9

在H2数据库中没有存储过程和sql用户定义的函数,而不是我们使用java方法并创建别名来引用它.我们可以使用别名调用该方法.

以下是一个简单的例子:**

DROP ALIAS IF EXISTS MYFUNCTION;
CREATE ALIAS MYFUNCTION AS $$
String getTableContent(java.sql.Connection con) throws Exception {
    String resultValue=null;
    java.sql.ResultSet rs = con.createStatement().executeQuery(
    " SELECT * FROM TABLE_NAME");
       while(rs.next())
       {
        resultValue=rs.getString(1);
       }
    return resultValue;
}
$$;
Run Code Online (Sandbox Code Playgroud)