Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème Oracle SEQUENCE.Currval dans CodeIgniter

Il existe un moyen d'obtenir la valeur automatiquement affectée à une colonne :c'est la clause RETURNING.

Alors, voici ma séquence :

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Je vais l'utiliser dans une instruction 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>

J'ai renvoyé l'EMPNO dans une variable SQL*Plus que je peux imprimer, et il a la même valeur que CURRVAL :

SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Votre question suivante est :"Est-ce que CodeIgniter prend en charge la syntaxe RETURNING ?" Je n'en ai aucune idée, mais je soupçonne que non. La plupart des frameworks non-Oracle ne le font pas.

Il y a toujours la possibilité d'encapsuler l'instruction INSERT dans une procédure stockée, mais c'est une décision architecturale que beaucoup de gens n'aiment pas.