我在我的应用程序中使用了oracle。
使用此代码时遇到问题:
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Query;
....
....
.....
public void insertGR(String id,String num) {
String query = "execute md_pkg.insert_Gr("+id+"," + num + ")";
SQLQuery sqlQuery = this.getSession().createSQLQuery(query);
sqlQuery.executeUpdate();
}
在jboss consol中我有这个错误:
SQL Error: 900, SQLState: 42000
ORA-00900: invalid SQL statement
org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
at
但是当我使用sqldevelopper时我没有任何问题
execute execute md_pkg.insert_Gr(9,25)
答案 0 :(得分:0)
ORA-900: Invalid SQL statement
应该给你足够的线索,说明发生了什么/错了什么。您要执行的语句不是SQL,它是尝试调用PL / SQL存储过程。所以,而不是
"execute md_pkg.insert_Gr("+id+"," + num + ")"
你应该(也许!我根本不知道Hibernate)而不是
"call md_pkg.insert_Gr("+id+"," + num + ")"
或
"begin md_pkg.insert_Gr("+id+"," + num + "); end;"
而不是使用SQLQuery
类尝试找到能够执行存储过程或匿名PL / SQL块的东西。
PS:我根本不了解Hibernate,所以我无法帮你找到正确的课程。