在Java中创建存储过程时,没有为参数1异常指定值
我正在从Java动态创建一个存储过程,如下所示:在Java中创建存储过程时,没有为参数1异常指定值,java,mysql,hibernate,stored-procedures,Java,Mysql,Hibernate,Stored Procedures,我正在从Java动态创建一个存储过程,如下所示: String dnyCursorProcedure ="CREATE PROCEDURE dyn_cursor" + mNumber + " (IN `query` TEXT, IN `timeout` TINYINT UNSIGNED, OUT x TEXT)" //more procedure queryTest = mEntityManager.createNativeQuery(dnyCursorProcedure); query
String dnyCursorProcedure ="CREATE PROCEDURE dyn_cursor" +
mNumber + " (IN `query` TEXT, IN `timeout` TINYINT UNSIGNED, OUT x TEXT)"
//more procedure
queryTest = mEntityManager.createNativeQuery(dnyCursorProcedure);
queryTest.executeUpdate();
当执行这段代码时,即使这是create procedure语句,它也会给出为参数1异常指定的No值
我错过了什么
编辑1:
以下是整个过程
String dnyCursorProcedure ="CREATE PROCEDURE dyn_cursor"
+mNumber+" (IN `query` TEXT, IN `timeout` TINYINT UNSIGNED, OUT x TEXT)"
+" BEGIN"
+" DECLARE val TEXT;"
+" DECLARE eof BOOL;"
+" DECLARE cur_dyn"+mNumber+" CURSOR FOR"
+" SELECT * FROM dyn_view"+mNumber+" ;"
+" DECLARE CONTINUE HANDLER"
+" FOR NOT FOUND"
+" SET eof = TRUE;"
+" CALL dyn_lock"+mNumber+" (query, 'dyn_view"+mNumber+"', timeout);"
+" OPEN cur_dyn"+mNumber+" ;"
+" DO RELEASE_LOCK('dyn_view"+mNumber+"');"
+" lp_dyn:LOOP"
+" IF eof = TRUE THEN"
+" LEAVE lp_dyn;"
+" END IF;"
+" FETCH cur_dyn"+mNumber+" INTO val;"
+" END LOOP;"
+" CLOSE cur_dyn"+mNumber+" ;"
+" SET x = val;"
+" END;";
在错误堆栈中查找导致异常的行号。检查它是否和你想的一样。否则,也发布代码的其他部分。@RavinderReddy我检查了堆栈跟踪,异常出现在queryTest.executeUpdate,正如预期的那样,我已经发布了整个过程。好的,我知道hibernate在查找其值时将:LOOP视为一个参数,现在我正在寻找一个转义角色。即使经过一个小时的努力寻找一个转义角色,我也没有解决方案,这是可能的吗?我参考了,但我仍然得到相同的错误。