sql >> Databasteknik >  >> RDS >> Oracle

Hur man definierar Oracle Package Procedur i H2 för testning

Här är vad jag gjorde.

Fråga #2: För att svara på denna fråga var jag tvungen att ändra den inbyggda frågan enligt följande

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

Fråga #1: Tre saker är inblandade för att svara på detta. Nu när jag hade ändrat den inbyggda frågan enligt ovan fick jag ett annat fel:

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)

Den letade efter en databas som heter sch1 . Det verkar som att mönstret som används för att anropa en lagrad procedur i H2 är database.schema.procedure_name . Eftersom jag inte bryr mig om vad den proceduren faktiskt gör kunde jag fejka detta genom att skapa en databas som heter sch1 ett schema som heter STUDENT_PACKAGE och procedurens namn Set_Grades_To_A

För att skapa i minnesdatabasen måste du ställa in följande egenskap spring.datasource.url i application.properties fil.

  1. Skapa sch1 databas enligt följande 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 . Observera att databasens namn är sch1

  2. Skapa STUDENT_PACKAGE schema genom att lägga till denna \\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE till slutet av spring.datasource.url . Detta lägger till ett andra schema som heter STUDENT_PACKAGE . Egenskapen ska se ut så här 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. Skapa en Set_Grades_To_A lagrad procedur genom att lägga till detta i ditt schema.sql CREATE ALIAS STUDENT_PACKAGE.Set_Grades_To_A AS $$ void setGradesToA(String s) { new StringBuilder(s).reverse().toString(); } $$;



  1. Gruppera efter vs Partition efter i Oracle

  2. Hur man använder pgBackRest för att säkerhetskopiera PostgreSQL och TimescaleDB

  3. Hämtar endast ett fast antal rader i MySQL

  4. Flytta en MariaDB-databas till krypterade och okrypterade tillstånd