千家信息网

ORACLE异常:RETURNING 子句不支持的功能

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,获取序列ID时出现的异常,检查oracle数据库表ID字段类型是否为NUMBER类型。如果是long修改为number即可。有关number类型:http://www.blogjava.net/cao
千家信息网最后更新 2024年11月26日ORACLE异常:RETURNING 子句不支持的功能
获取序列ID时出现的异常,检查oracle数据库表ID字段类型是否为NUMBER类型。如果是long修改为number即可。有关number类型:http://www.blogjava.net/caojianhua/archive/2011/01/24/343461.html严重: nulljava.sql.SQLException: ORA-22816: RETURNING 子句不支持的功能        at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)        at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:947)        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3462)        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1061)        at org.iie.dao.impl.OracleGenelDaoImpl.insertDataReturnKeyByReturnInto(OracleGenelDaoImpl.java:160)        at org.iie.dao.impl.OracleGenelDaoImpl.main(OracleGenelDaoImpl.java:148)

顺便贴出获取序列号的方法:


public static int insertDataReturnKeyByReturnInto() throws Exception {        Connection conn = GlobalData.getOracleConnection();        String vsql = "insert into xx(id) values(xx_squencee.nextval) returning id into :1";        OraclePreparedStatement pstmt = (OraclePreparedStatement) conn.prepareStatement(vsql);        pstmt.registerReturnParameter(1, Types.BIGINT);        pstmt.executeUpdate();        ResultSet rs = pstmt.getReturnResultSet();        rs.next();        int id = rs.getInt(1);        rs.close();        pstmt.close();        System.out.print("id:" + id);        return id;    }


0