H2 database and functions in separate circuits

I am trying to create a test database (with H2 database). I use Oracle in production and it seems nice to have oracle compatibility mode in h2.

However, I had a problem translating the oracle design:

create or replace PACKAGE permission_tools IS
    FUNCTION get_role_access_level(
          p_role_id IN NUMBER,
          p_permiss IN VARCHAR2)
    RETURN NUMBER;
END permission_tools;

I'm calling with:

select permission_tools.get_access_level(?, ?) from dual;

into the equivalent of H2. I tried something like:

CREATE SCHEMA PERMISSION_TOOLS;

CREATE ALIAS PERMISSION_TOOLS.GET_ACCESS_LEVEL as $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$;

But this gives me a compilation error:

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "

CREATE ALIAS PERMISSION_TOOLS.[*]GET_ACCESS_LEVEL AS   
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
   "; expected "FOR"; SQL statement:


CREATE ALIAS PERMISSION_TOOLS.GET_ACCESS_LEVEL as $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$ [42001-131]

This does not give any idea what is happening here.

Any help was appreciated.

+3
source share
2 answers

H2 . , , : PERMISSION_TOOLS_GET_ACCESS_LEVEL. , . PERMISSION_TOOLS :

create schema PERMISSION_TOOLS;
CREATE ALIAS PERMISSION_TOOLS.GET_ACCESS_LEVEL as $$
String nextPrime(String value) {
    return new BigInteger(value).nextProbablePrime().toString();
}
$$;
select permission_tools.get_access_level(1) from dual;

, 1.2.131 H2 ( , ). , " " ( 1.2.135). 1.2.138, ​​, . : , PUBLIC, H2.

+6

@thomas-mueller, , . H2

database.schema.procedure_name

, , , test call test.PERMISSION_TOOLS.GET_ACCESS_LEVEL

Oracle h2

0

Source: https://habr.com/ru/post/1753872/


All Articles