Abi*_*Abi 8 java stored-procedures h2
我是数据库的新手,最近开始编写H2数据库的测试用例.我想知道如何在Eclipse中测试存储过程.我见过以下内容:
http://www.h2database.com/html/features.html#user_defined_functions
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"?
谢谢.
你可能忽略了这些例子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
.
在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)
归档时间: |
|
查看次数: |
23131 次 |
最近记录: |