1 Reply Latest reply on Jul 2, 2018 1:11 PM by Lisandro Fernigrini

    Como recuperar el ultimo id generado en oracle 11g

    3709205

       

      Estoy tratando de capturar el último id registrado en una tabla (USO ORACLE 11G) y buscando en internet me encontre este post.

      No encontre mucha informacion en español por eso solo estoy usando como referencia solo este post, pero no me funciona. En el post indica que hay que crear un trigger y luego capturar el idingresado , a través de un returning into pero al momento de ejecutar la sentencia de insertjunto con el returning me da error, pero si ejecuto solo el insert no hay problema. En teoría debería ejecutarse las dos instrucciones juntas.

      En concreto me da el sgt error:"ORA-01008: NOT ALL VARIABLES BOUND".

      Estoy tratando de capturar el último id registrado en una tabla (USO ORACLE 11G) y buscando en internet me encontre este post.

      No encontre mucha informacion en español por eso solo estoy usando como referencia solo este post, pero no me funciona. En el post indica que hay que crear un trigger y luego capturar el idingresado , a través de un returning into pero al momento de ejecutar la sentencia de insertjunto con el returning me da error, pero si ejecuto solo el insert no hay problema. En teoría debería ejecutarse las dos instrucciones juntas.

      En concreto me da el sgt error:

      "ORA-01008: NOT ALL VARIABLES BOUND".

      /*CREANDO SECUENCIAS*/  create sequence id_pedido start with 1 increment by 1; 
      /*CREO LA TABLA PADRE*/ create table pedidos_padre( id_pedidos_padre int primary key,
      id_usuario int, fecha_registro date,
      nom_cliente varchar(150),
      foreign key(id_usuario)
      references usuario(id_usuario) );
      /*creo un disparador para capturar el ultimo id generado*/ 
      CREATE OR REPLACE TRIGGER pedidos_padre_bit
      BEFORE
      INSERT ON pedidos_padre
      FOR EACH ROW BEGIN
      SELECT id_pedido.NEXTVAL INTO   :new.id_pedidos_padre FROM   dual;
      END;
      insert into pedidos_padre(id_pedidos_padre,id_usuario,fecha_registro,nom_cliente)
      values(id_pedido.nextval,2,sysdate,'rayito')
      RETURNING id_pedidos_padre
      INTO :last_insert_id
        • 1. Re: Como recuperar el ultimo id generado en oracle 11g
          Lisandro Fernigrini

          Estoy tratando de capturar el último id registrado en una tabla

          La duda que me surge es, que es lo que tenes que hacer con el ID una vez que lo obtuviste? El trigger no es necesario en lo mas mínimo, se puede obtener el ID usando directamente la opcion RETURNING. Lo que necesitamos saber es en que contexto se hace el insert. Lo hace una aplicación? Un procedimiento almacenado? Es un script?

           

          Dependiendo de ello hay diversas formas de capturar el ID que fue insertado, el ejemplo que estas poniendo incrementa la secuencia 2 veces ya que isa id_pedido.NEXTVAL en dos lugares.

           

          Por otro lado, no es recomendable nombrar una secuencia con el nombre similar a como se nombra la columna. Conviene que definas un estandar de nomenclatura que sea claro.