sql >> Database >  >> RDS >> Oracle

Hoe Oracle Package Procedure in H2 te definiëren voor testen

Dit is wat ik deed.

Vraag #2: Om deze vraag te beantwoorden, moest ik de native query als volgt wijzigen

@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();
}

Vraag #1: Om hier antwoord op te geven, zijn drie dingen van belang. Nu ik de native query had gewijzigd zoals hierboven, kreeg ik een andere foutmelding:

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)

Het was op zoek naar een database genaamd sch1 . Het lijkt erop dat het patroon dat wordt gebruikt om een ​​opgeslagen procedure in H2 aan te roepen, database.schema.procedure_name is. . Omdat het me niet kan schelen wat die procedure eigenlijk doet, kon ik dit vervalsen door een database te maken met de naam sch1 een schema genaamd STUDENT_PACKAGE en de procedurenaam Set_Grades_To_A

Om de in het geheugen database aan te maken, moet u de volgende eigenschap spring.datasource.url . instellen in de application.properties bestand.

  1. Maak de sch1 database als volgt 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 . Merk op dat de databasenaam sch1 . is

  2. Maak het STUDENT_PACKAGE schema door dit toe te voegen \\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE aan het einde van de spring.datasource.url . Dit voegt een tweede schema toe genaamd STUDENT_PACKAGE . De eigenschap zou er als volgt uit moeten zien 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. Maak een Set_Grades_To_A opgeslagen procedure door dit toe te voegen aan uw schema.sql CREATE ALIAS STUDENT_PACKAGE.Set_Grades_To_A AS $$ void setGradesToA(String s) { new StringBuilder(s).reverse().toString(); } $$;



  1. Hoe mysql 5.6.16 installeren en configureren in Windows 7

  2. ORA-00933:SQL-opdracht is niet correct beëindigd tijdens het gebruik van pivot

  3. SQL-insert genereren in voor Oracle

  4. COALESCE() voor lege (maar niet null) velden