返回插入的 id Oracle 时并非所有变量都绑定
not all variables bound when returning inserted id Oracle
我试图在数据库 table 中插入新数据时获取新 ID,但我得到了:
ORA-01008: not all variables bound
我是从一个 Java SE 项目做的,
public ResultSet ejecutarConsulta(String instruccionSql){
rs = null;
try {
st = con.createStatement();
rs = st.executeQuery(instruccionSql);
System.out.println("Consulta Exitosa");
} catch (SQLException e) {
System.out.println("Error en la Consulta: "+e.getMessage());
}
return rs;
}
我传递的字符串 "instruccionSql" 是
insert into Usuario(DOCUMENTOIDENTIDAD,NOMBRE,CARGO,CONTRASENA,PERMISO)
values ('22323','asfa','Administrador','123456','0')
RETURNING ID INTO :temp
我有对应的trigger和Seq来生成table自增id。
您正在尝试使用未绑定到值的绑定变量 (:i)。
使用CallableStatement并注册OUT参数。
这也是注册 IN 参数的绝佳机会。
String mySql = "DECLARE x NUMBER; BEGIN "
+ " insert into Usuario(DOCUMENTOIDENTIDAD,NOMBRE,CARGO,CONTRASENA,PERMISO) "
+ " values (?,?,?,?,?) "
+ " RETURNING ID INTO x;"
+ " ? := x;"
+ "END; ";
CallableStatement cal = conn.prepareCall(mySql);
cal.setString(1, "22323");
cal.setString(2, "asfa");
cal.setString(3, "Administrador");
cal.setString(4, "123456");
cal.setString(5, "0");
cal.registerOutParameter(6, java.sql.Types.INTEGER);
cal.executeQuery();
Integer newId = cal.getInt(6);
我试图在数据库 table 中插入新数据时获取新 ID,但我得到了:
ORA-01008: not all variables bound
我是从一个 Java SE 项目做的,
public ResultSet ejecutarConsulta(String instruccionSql){
rs = null;
try {
st = con.createStatement();
rs = st.executeQuery(instruccionSql);
System.out.println("Consulta Exitosa");
} catch (SQLException e) {
System.out.println("Error en la Consulta: "+e.getMessage());
}
return rs;
}
我传递的字符串 "instruccionSql" 是
insert into Usuario(DOCUMENTOIDENTIDAD,NOMBRE,CARGO,CONTRASENA,PERMISO)
values ('22323','asfa','Administrador','123456','0')
RETURNING ID INTO :temp
我有对应的trigger和Seq来生成table自增id。
您正在尝试使用未绑定到值的绑定变量 (:i)。
使用CallableStatement并注册OUT参数。
这也是注册 IN 参数的绝佳机会。
String mySql = "DECLARE x NUMBER; BEGIN "
+ " insert into Usuario(DOCUMENTOIDENTIDAD,NOMBRE,CARGO,CONTRASENA,PERMISO) "
+ " values (?,?,?,?,?) "
+ " RETURNING ID INTO x;"
+ " ? := x;"
+ "END; ";
CallableStatement cal = conn.prepareCall(mySql);
cal.setString(1, "22323");
cal.setString(2, "asfa");
cal.setString(3, "Administrador");
cal.setString(4, "123456");
cal.setString(5, "0");
cal.registerOutParameter(6, java.sql.Types.INTEGER);
cal.executeQuery();
Integer newId = cal.getInt(6);