sql >> データベース >  >> RDS >> Oracle

テスト用にH2でOraclePackageProcedureを定義する方法

    これが私がしたことです。

    質問2: この質問に答えるには、ネイティブクエリを次のように変更する必要がありました

    @Repository
    public interface StudentRepository extends JpaRepository<Student, String> {
    
    @Modifying
    @Query(value = "call sch1.STUDENT_PACKAGE.Set_Grades_To_A('A')", nativeQuery = true)
    public void setStudentGradeToA();
    }
    

    質問1: これに答えるには3つのことが関係しています。上記のようにネイティブクエリを変更したので、別のエラーが発生しました:

    Caused by: org.h2.jdbc.JdbcSQLException: Database "sch1" not found; SQL statement:
    call sch1.STUDENT_PACKAGE.Set_Grades_To_A('A') [90013-197]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
    

    sch1というデータベースを探していました 。 H2でストアドプロシージャを呼び出すために使用されるパターンは、database.schema.procedure_nameのようです。 。その手順が実際に何をするかは気にしないので、sch1というデータベースを作成することでこれを偽造することができました。 STUDENT_PACKAGEというスキーマ およびプロシージャ名Set_Grades_To_A

    インメモリデータベースを作成するには、次のプロパティspring.datasource.urlを設定する必要があります。 application.properties内 ファイル。

    1. sch1を作成します データベースは次のとおりですspring.datasource.url=jdbc:h2:mem:sch1;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS first_schema 。データベース名がsch1であることに注意してください

    2. STUDENT_PACKAGEを作成します この\\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGEを追加してスキーマを作成します spring.datasource.urlの最後まで 。これにより、STUDENT_PACKAGEという2番目のスキーマが追加されます。 。プロパティは次のようになります。spring.datasource.url=jdbc:h2:mem:sch1;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS first_schema\\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE

    3. Set_Grades_To_Aを作成します これをschema.sqlに追加することによるストアドプロシージャCREATE ALIAS STUDENT_PACKAGE.Set_Grades_To_A AS $$ void setGradesToA(String s) { new StringBuilder(s).reverse().toString(); } $$;



    1. MySQL/MariaDB-サブクエリ内で並べ替え

    2. PostgreSQLの日付から年を抽出する

    3. MacでLaravelをセットアップするphp職人の移行エラー:そのようなファイルやディレクトリはありません

    4. MySQLデータベースにJSON文字列を保存する方法