Java拼接SQL在Oracl里创建触发器:索引中丢失 IN 或 OUT 参数:: 1

车开源 发布于 2015/04/02 15:59
阅读 437
收藏 0

CREATE OR REPLACE TRIGGER TRIGGER_TT before insert on TBL_DEMOFORM for each row begin  select SEQ_TBL_DEMOFORM.nextval into :new.ID from dual;end;

以上语句在数据库客户端执行都是正常的,放到Java里就

Caused by: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1

这让我摸不着头脑了,请大神们指点迷津…………

……………………………经过好多分钟……………………

尝试到了以下办法可以解决,尤其是直接执行一段SQL,中间不用处理参数的情况很有效果。

Db.execute(new ICallback() {
                
@Override
public Object call(Connection conn) throws SQLException {
// TODO Auto-generated method stub
 conn.createStatement().execute(sql.toString());
  return "ok";
  }
  });


导致问题出现,是在:com.jfinal.plugin.activerecord.DbPro 以下方法

    int update(Config config, Connection conn, String sql, Object... paras) throws SQLException {
        PreparedStatement pst = conn.prepareStatement(sql);
        config.dialect.fillStatement(pst, paras);
        int result = pst.executeUpdate();
        DbKit.closeQuietly(pst);
        return result;
    }

断估是因为pst.executeUpdate()不合适执行创建触发器或者存储过程这样的SQL代码。

加载中
0
ohaozy
ohaozy
不错,支持一下。
返回顶部
顶部