Как запустить обработанную процедуру CREATE запрос с использованием jpa - PullRequest
1 голос
/ 09 апреля 2020

Я хочу создать хранимую процедуру, используя существующий запрос. Я не могу выполнить весь запрос, он вызывает исключение SQLGrammer.

Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '//
CREATE PROCEDURE INSERT_SECURITY_PARAMETERS()
BEGIN
DECLARE CONTINUE HANDLER ' at line 1
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391)
    at com.mysql.cj.jdbc.CallableStatement.execute(CallableStatement.java:842)

Мой тестовый код, как показано ниже:

  @Test
    public void  procedureTest(){
        EntityManager em = getEntityManager();
        em.getTransaction().begin();
        StoredProcedureQuery  storedProcedureQuery = em.createStoredProcedureQuery("DELIMITER //\n" +
                "CREATE PROCEDURE INSERT_SECURITY_PARAMETERS()\n" +
                "BEGIN\n" +
                "DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT 'SQLSTATE 23000' ErrorCode;\n" +
                "INSERT INTO TB_ASMI_SECURITY_PARAMETERS (APP_ID,MIN_NUM_NUM,MIN_NUM_SPCL_CHAR,MIN_NUM_UPPER_CASE_CHAR,MIN_LENGTH,MAX_LENGTH,PASS_CHANGE_FREQ,LAST_N_PASS_NOT_TO_USE,SESSION_TIMEOUT,NOOFFAILEDCOUNTS,CREATE_USER_ID,CREATE_TS,VERSION_NO,SERVER_TOKEN,FAIL_COUNT_TIMEOUT,PASSWORD_COUNT,DEFAULT_AUTHORIZATION,ALLOW_USER_PASSWORD_ENTRY,AUTO_APPROVE,PWD_COMM_CHANNEL,AUTH_STATUS,MULTIPLE_SESSION_ALLOWED,OTP_LENGTH,OTP_VALIDATION_COUNT,OTP_EXPIRY,OTP_RESEND,OTP_FORMAT,OTP_RESEND_COUNT,OTP_RESEND_LOCK_TIMEOUT,OTP_REGEN_COUNT,DATA_INTEGRITY,TXN_LOG_REQ,TXN_LOG_PAYLOAD,FMW_TXN_REQ,FMW_TXN_PAYLOAD, ACCESS_TOKEN_EXPIRY)\n" +
                " VALUES('Admin',1,1,1,8,32,30,1,'3000',5,'System',null,1,'ADMIN',5,5,'Y','N','Y','BOTH','A','Y','6','5','600','N','numeric','3','300','0','Y','Y','NONE','Y','NONE','1800');\n" +
                "END\n" +
                "//\n" +
                "DELIMITER ;");


        storedProcedureQuery.execute();
        em.getTransaction().commit();
        em.close();
    }

Если я запускаю из mysql worckbench, он работает нормально.

Я пробовал разные способы запуска скрипта. Пожалуйста, помогите мне в этом. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...