如何使用Schema.package.function具有H2数据库

时间:2019-03-12 00:22:47

标签: spring-boot h2 in-memory-database spring-boot-test

我已经创建了一个Spring Boot应用程序。我正在尝试使用H2数据库(生产中的Oracle)创建测试数据库。

但是我在翻译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')

我尝试过这样的事情

为“ somepackage.hello”创建别名MYSCHEMA.MYPACKAGE.MYFUNCTION;

但是我遇到了以下异常

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]

您能帮我吗

0 个答案:

没有答案