Как иметь базу данных H2 с функцией Schema.package.function - PullRequest
0 голосов
/ 12 марта 2019

Я создал загрузочное приложение Spring. Я пытаюсь создать тестовую базу данных, используя базу данных H2 (Oracle в производстве).

Однако у меня есть проблема с переводом конструкции оракула: MYSCHEMA.MYPACKAGE.MYFUNCTION

CREATE SCHEMA IF NOT EXISTS MYSCHEMA;
CREATE ALIAS MYSCHEMA.MYPACKAGE FOR "somepackage.hello";

  public static ResultSet hello(String name)
  {
      SimpleResultSet result = new SimpleResultSet();
      result.addColumn("GREETING", Types.VARCHAR, 255, 0);
      result.addRow("Hello, " + name + "!");
      return result;
  }

Мой тестовый класс

  public void test() throws Exception
  {
      Connection connection = DriverManager.getConnection("jdbc:h2:mem:testdb", "sa", "");
      Statement statement = connection.createStatement();
      ResultSet resultSet = statement.executeQuery("CALL MYSCHEMA.MYPACKAGE('Thiaga')");
      if(resultSet.next()) {
        System.out.println("HelloWorld:"+resultSet.getString("GREETING"));  
      }         
  }

Приведенная выше программа работает нормально с MYSCHEMA.MYPACKAGE ('Thiaga') . Но когда я включаю имя функции, это сбой

Я хочу, чтобы это работало

MYSCHEMA.MYPACKAGE.MYFUNCTION ( 'Thiaga')

Я пробовал что-то вроде этого

СОЗДАТЬ ALIAS MYSCHEMA.MYPACKAGE.MYFUNCTION FOR "somepackage.hello";

Но я получаю следующее исключение

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE ALIAS MYSCHEMA.MYPACKAGE.[*]MYFUNCTION FOR ""somepackage.hello"" "; expected "DETERMINISTIC, NOBUFFER, AS, FOR"; SQL statement:
CREATE ALIAS MYSCHEMA.MYPACKAGE.MYFUNCTION  FOR "somepackage.hello" [42001-196]

Не могли бы вы помочь мне в этом

...