16

私はデータベースが初めてで、最近 H2 データベースのテスト ケースを書き始めました。Eclipse でストアド プロシージャをテストする方法を知りたいです。私は以下を見てきました:

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

H2でPROCEDUREを作成する方法

h2database リンクにあるサンプル コード、

"CREATE ALIAS NEXT_PRIME AS $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$;
" 
  • これはどこで宣言する必要がありますか?また、どのように実行しますか?

PS - 私は H2 JAR ファイルを持っていて、それをテストしています。

Java で H2 用の単純なストアド プロシージャを作成する方法を誰かが教えてくれれば、非常に役に立ちます。

また、H2 には以下に相当するものはありますか?

"dbms_output を開始" ?

ありがとう。

4

5 に答える 5

12

の例を見落としている可能性があります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));

コンソール: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));
}

コンソール:User: SA

cli.Function.queryのコピーであることに注意してくださいorg.h2.samples.Function.query

于 2012-08-07T06:21:05.433 に答える
12

H2データベースには、Javaメソッドを使用してエイリアスを作成する代わりに、ストアドプロシージャとSQLユーザー定義関数はありません。エイリアスを使用してそのメソッドを呼び出すことができます。

以下は簡単な例です:**

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;
}
$$;
于 2014-09-23T10:13:39.757 に答える