您可能忽略了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));
控制台:版本:1.4.191
附录:该功能不仅限于功能;别名方法可以执行任意Java code.例如,Function.java中定义的query()方法可能是别名并调用,如下所示:
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));
}
控制台:用户:SA
请注意,cli.Function.query是org.h2.samples.Function.query的副本.