Я довольно новичок в 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]