Hibernate执行存储过程报错:找不到存储过程 'dbo.DbInfo'。
sqlserver是这样调用的:
------------------------
go
exec dbo.DbInfo 8000,30000,''
------------------------
可以查询出数据集
java中action里的代码如下:
String procName="{Call dbo.DbInfo(?,?,?) }";
SQLQuery sqlquery = sess.createSQLQuery(procName);
sqlquery.setInteger(0, 8000);
sqlquery.setInteger(1, 30000);
sqlquery.setString(2, "");
List<?> list = null;
list = sqlquery.list();
我用hibernate里的Session查询了一个sql语句是没问题的。
-----------------各种搜都没有结果 ============== 存储 Hibernate java
[解决办法]
改为String procName="{Call DbInfo(?,?,?)}";看看
[解决办法]
你那肯定不行了,createSQLQuery是执行SQL语句的。
应该这样:
CallableStatement call = conn.prepareCall("{Call getLogPageData(?,?)}");
call.setString(1, tempSql);
call.setString(2, listsql);
ResultSet rst = call.executeQuery();
[解决办法]
网上搜了个,你不用hiberante 你执行看看有没有这个存储过程 ?
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=fish";
String user = "bm";
String pwd = "bm";
Connection conn = null;
CallableStatement proc = null;//执行sql存储过程的接口
ResultSet rs = null;
// 调用存储过程p_1:从Cell表中取出数据
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection(url,user,pwd);
proc = conn.prepareCall("{? = call p_1 ()}");
proc.registerOutParameter(1, Types.REAL);
rs = proc.executeQuery();//取得结果集
while(rs.next()){
System.out.println(rs.getString("name"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!=null) rs.close();
if(proc!=null)proc.close();
if(conn!=null)conn.close();
}
}