Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回插入的Oracle id时并非所有变量都已绑定_Java_Sql_Oracle_Auto Increment - Fatal编程技术网

Java 返回插入的Oracle id时并非所有变量都已绑定

Java 返回插入的Oracle id时并非所有变量都已绑定,java,sql,oracle,auto-increment,Java,Sql,Oracle,Auto Increment,在数据库表中插入新数据时,我试图获取新id,但我得到: ORA-01008: not all variables bound 我是在一个Java SE项目中完成的 public ResultSet ejecutarConsulta(String instruccionSql){ rs = null; try { st = con.createStatement(); rs = st.execute

在数据库表中插入新数据时,我试图获取新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;
    }
我要传递的字符串指令是

     insert  into Usuario(DOCUMENTOIDENTIDAD,NOMBRE,CARGO,CONTRASENA,PERMISO)
 values ('22323','asfa','Administrador','123456','0')
 RETURNING ID INTO :temp

我有相应的触发器和Seq来生成表自动增量id。

您正在尝试使用一个绑定变量:未绑定到值的I

使用并注册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);

你能给我解释一下,这样做的方法吗?使用绑定变量到sql未匹配数据类型时可能会有一些冲突。嗨,我尝试用你的方法,不带参数,只带输出,所以我写cal.registerOutParameter1,java.sql.Types.INTEGER;但它的意思是索引::2中缺少IN或OUT参数,但在,?处只有“?”:=x@Jomazao请将您的实际代码粘贴到问题上,不看源代码就很难诊断错误;cal.setString2;cal.registerOutParameter1,java.sql.Types.INTEGER;加州行政学院;整数cosa=cal.getInt1;查询=声明x编号;开始插入UsuarioDOCUMENTOIDENTIDAD、NOMBRE、CARGO、CONTRASENA、PERMISO值“123456”、“asfasf”、“Administrator”、“123456”和“0”,将ID返回到:x;?:=x;终止