Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Problema Oracle SEQUENCE.Currval no CodeIgniter


Existe uma maneira de obter o valor atribuído automaticamente a uma coluna:é a cláusula RETURNING.

Então, aqui está minha sequência:
SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Vou usá-lo em uma instrução 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>

Retornei o EMPNO em uma variável SQL*Plus que posso imprimir e tem o mesmo valor que CURRVAL:
SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Sua próxima pergunta é:"o CodeIgniter suporta a sintaxe RETURNING?" Não faço ideia, mas suspeito que não. A maioria dos frameworks não Oracle não.

Sempre há a opção de envolver a instrução INSERT em um procedimento armazenado, mas essa é uma decisão de arquitetura que muitas pessoas não gostam.