Oracle
 sql >> Database >  >> RDS >> Oracle

Problema Oracle SEQUENCE.Currval in CodeIgniter

C'è un modo per ottenere automaticamente il valore assegnato a una colonna:è la clausola RETURNING.

Quindi, ecco la mia sequenza:

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Lo userò in un'istruzione 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>

Ho restituito EMPNO in una variabile SQL*Plus che posso stampare e ha lo stesso valore di CURRVAL:

SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

La tua prossima domanda è "CodeIgniter supporta la sintassi RETURNING?" Non ne ho idea, ma sospetto di no. La maggior parte dei framework non Oracle non lo fa.

C'è sempre la possibilità di racchiudere l'istruzione INSERT in una stored procedure, ma questa è una decisione architettonica che non piace a molte persone.