Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем с Oracle SEQUENCE.Currval в CodeIgniter

Има начин да получите автоматично присвоена стойност на колона:това е клаузата RETURNING.

И така, ето моята последователност:

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Ще го използвам в оператор 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>

Върнах EMPNO в променлива SQL*Plus, която мога да отпечатам, и има същата стойност като CURRVAL:

SQL> print :seqval

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

SQL> select emp_seq.currval from dual
  2  /

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

SQL>

Следващият ви въпрос е "CodeIgniter поддържа ли RETURNING синтаксиса?" Нямам представа, но подозирам, че не е така. Повечето рамки, различни от Oracle, не го правят.

Винаги има опция за обвиване на оператора INSERT в съхранена процедура, но това е архитектурно решение, което много хора не харесват.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Динамично търсене на имена на колони за таблица, докато сте в sql заявка

  2. JUnit/HSQLDB:Как да заобиколите грешки със синтаксиса на Oracle при тестване с помощта на HSQLDB (без привилегия и/или без DUAL обект)

  3. Как да разберете URL адреса на базата данни на Oracle?

  4. Как да избегнем 0 стойности с помощта на функцията MIN и MAX в SQL?

  5. Как да проверя дали стойността на DataReader не е нула?