Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SEQUENCE.Currval-Problem in CodeIgniter

Es gibt eine Möglichkeit, den Wert einer Spalte automatisch zuweisen zu lassen:die RETURNING-Klausel.

Also, hier ist meine Sequenz:

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Ich werde es in einer INSERT-Anweisung verwenden:

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>

Ich habe EMPNO in eine SQL*Plus-Variable zurückgegeben, die ich drucken kann, und sie hat denselben Wert wie CURRVAL:

SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Ihre nächste Frage lautet:"Unterstützt CodeIgniter die RETURNING-Syntax?" Ich habe keine Ahnung, aber ich vermute, dass es nicht so ist. Die meisten Nicht-Oracle-Frameworks tun dies nicht.

Es gibt immer die Option, die INSERT-Anweisung in eine gespeicherte Prozedur einzuschließen, aber das ist eine architektonische Entscheidung, die vielen Leuten nicht gefällt.