Как создать Stored Proc в H2 - PullRequest
0 голосов
/ 05 марта 2019

Я довольно новичок в Hibernate.Не могли бы вы помочь мне ниже.Я пытаюсь создать сохраненный Proc, используя ALIAS в h2 (в базе данных памяти).Я посмотрел руководство по базе данных h2 на этой основе, которое я реализовал ниже.

Класс Java:

    public class H2StoredProcedures {

          public static void load(Connection conn,String sql) {
               System.out.print("");
            //  File file = new File("src/test/resources/data/proc.sql");
              try {
                  conn.createStatement().execute(sql);
              } catch (SQLException e) {
                  e.printStackTrace();
              }
          }

В настоящее время я использую версию hibernate: 1.4.197. Ниже приведен код движка h2, которыйвызывает метод java.

Модуль H2 (файл sql, в котором у меня есть скрипты схемы и таблиц):

DROP ALIAS IF EXISTS PROC;
CREATE ALIAS PROC FOR "com.util.h2.H2StoredProcedures.load";
CALL PROC('CREATE OR REPLACE PROCEDURE procPrintHelloWorld
IS
BEGIN

  DBMS_OUTPUT.PUT_LINE(''Hello World!'');

END');

Ошибка:

Синтаксическая ошибка в операторе SQL"СОЗДАНИЕ ИЛИ ЗАМЕНА ПРОЦЕДУРЫ [*]

Полная ошибка Msg:

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE OR REPLACE PROCEDURE[*] LOADTEST (P_NAME IN VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('Welcome '|| P_NAME);
END; "; expected "FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, SYNONYM, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX"; SQL statement:
CREATE OR REPLACE PROCEDURE LOADTEST (p_name IN VARCHAR2)
IS
BEGIN
dbms_output.put_line ('Welcome '|| p_name);
END; [42001-197]
...