sql >> Base de Datos >  >> RDS >> Oracle

Problema Oracle SEQUENCE.Currval en CodeIgniter

Hay una forma de obtener el valor asignado automáticamente a una columna:es la cláusula RETURNING.

Entonces, aquí está mi secuencia:

SQL> select emp_seq.currval from dual
  2  /

   CURRVAL
----------
      8140

SQL>

Voy a usarlo en una instrucción INSERT:

SQL> var seqval number
SQL> insert into emp
  2  (empno, ename, deptno, sal, job)
  3  values
  4      (emp_seq.nextval, 'JELLEMA', 50, 4575, 'PAINTER')
  5  returning empno into :seqval
  6  /

1 row created.

SQL>

Devolví EMPNO a una variable SQL*Plus que puedo imprimir y tiene el mismo valor que CURRVAL:

SQL> print :seqval

    SEQVAL
----------
      8141

SQL> select emp_seq.currval from dual
  2  /

   CURRVAL
----------
      8141

SQL>

Su próxima pregunta es, "¿CodeIgniter es compatible con el sistema de RETORNO?" No tengo idea, pero sospecho que no. La mayoría de los marcos que no son de Oracle no lo hacen.

Siempre existe la opción de envolver la declaración INSERT en un procedimiento almacenado, pero esa es una decisión arquitectónica que a mucha gente no le gusta.