java程序中调用mysql存储过程的代码如下 String sqlStr = "{execute Journalx2AspWKByQi ?,?,?,?,?,?,?,?,?,?,?,?,?,?}";
Boolean ret = Boolean.FALSE;
try {
  PreparedStatement pstmt = session.connection().prepareStatement(sqlStr);  pstmt.setString(1, mag_id);
pstmt.setString(2, aspWk_ZaZhiID);
pstmt.setString(3, aspWk_Dbname);
pstmt.setString(4, ZaZhiMC);
pstmt.setString(5, ZaZhiMC_E);
pstmt.setString(6, FaBuLX);
pstmt.setString(7, NianDu);
pstmt.setString(8, QiHao);
pstmt.setString(9, FaBuLeiXing);
pstmt.setString(10, ShouFeiLX);
pstmt.setString(11, ShouFeiJG);
pstmt.setString(12, QiShiYe);
pstmt.setString(13, JieShuYe);
pstmt.setString(14, FaBuRQ);
pstmt.execute();
pstmt.close();
ret = Boolean.TRUE;
} catch (Exception e) {
log.warn("调用存储过程出错:", e);
System.out.println("Journalx2AspWKByQi出错");
ret = Boolean.FALSE;
}存储过程的源代码是
DELIMITER $$DROP PROCEDURE IF EXISTS `journalx_standard`.`Journalx2AspWKByQi`$$CREATE PROCEDURE `Journalx2AspWKByQi`(
mag_id varchar(10),
aspWk_ZaZhiID varchar(50) charset gbk,
aspWk_Dbname varchar(50) charset gbk,
ZaZhiMC varchar(50) charset gbk,
ZaZhiMC_E varchar(200) charset gbk,
FaBuLX varchar(10) charset gbk,
NianDu varchar(50) charset gbk,
QiHao varchar(50) charset gbk,
FaBuLeiXing varchar(50) charset gbk,
ShouFeiLX varchar(10) charset gbk,
ShouFeiJG varchar(10) charset gbk,
QiShiYe varchar(20) charset gbk,
JieShuYe varchar(20) charset gbk,
FaBuRQ varchar(20) charset gbk
)sp:BEGIN
if 1=1 then
      select 'hao';
      leave sp;
  end if;
END$$DELIMITER ;结果报错说是
2009-01-08 13:35:21,582 [http-8080-Processor24] WARN  com.mag.journal.dao.hibernate.OutPutWKDAOHibernate - 调用存储过程出错:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
我从网上找信息没有解决,麻烦高手们给个意见吧。谢谢!