sql >> Databáze >  >> RDS >> Oracle

Jak definovat Oracle Package Procedure v H2 pro testování

Tady je to, co jsem udělal.

Otázka č. 2: Abych odpověděl na tuto otázku, musel jsem změnit nativní dotaz následovně

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

Otázka č. 1: K zodpovězení této otázky jsou zapotřebí tři věci. Nyní, když jsem změnil nativní dotaz, jak je uvedeno výše, dostal jsem jinou chybu:

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)

Hledal databázi nazvanou sch1 . Zdá se, že vzor používaný k volání uložené procedury v H2 je database.schema.procedure_name . Protože mě nezajímá, co ten postup vlastně dělá, dokázal jsem to předstírat vytvořením databáze nazvané sch1 schéma nazvané STUDENT_PACKAGE a název procedury Set_Grades_To_A

Chcete-li vytvořit databázi v paměti, musíte nastavit následující vlastnost spring.datasource.url v application.properties soubor.

  1. Vytvořte sch1 databázi takto 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 . Všimněte si, že název databáze je sch1

  2. Vytvořte STUDENT_PACKAGE schéma přidáním tohoto \\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE na konec spring.datasource.url . Tím se přidá druhé schéma nazvané STUDENT_PACKAGE . Vlastnost by měla vypadat takto 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. Vytvořte Set_Grades_To_A uloženou proceduru přidáním tohoto do vašeho schema.sql CREATE ALIAS STUDENT_PACKAGE.Set_Grades_To_A AS $$ void setGradesToA(String s) { new StringBuilder(s).reverse().toString(); } $$;



  1. Výběr sloupce, který je také klíčovým slovem v MySQL

  2. Jak načíst více řádků z uložené funkce pomocí oracle

  3. Jak zajistit, aby v číslech auto_increment nebyly žádné mezery?

  4. Jak mít kompletní offline funkčnost ve webové aplikaci s PostgreSQL databází?