Overview

Namespaces

  • None
  • Yajra
    • Oci8
      • Auth
      • Connectors
      • Eloquent
      • Query
        • Grammars
        • Processors
      • Schema
        • Grammars

Classes

  • Yajra\Oci8\Auth\OracleUserProvider
  • Yajra\Oci8\Connectors\OracleConnector
  • Yajra\Oci8\Eloquent\OracleEloquent
  • Yajra\Oci8\Oci8Connection
  • Yajra\Oci8\Oci8ServiceProvider
  • Yajra\Oci8\Query\Grammars\OracleGrammar
  • Yajra\Oci8\Query\OracleBuilder
  • Yajra\Oci8\Query\Processors\OracleProcessor
  • Yajra\Oci8\Schema\Comment
  • Yajra\Oci8\Schema\Grammars\OracleGrammar
  • Yajra\Oci8\Schema\OracleAutoIncrementHelper
  • Yajra\Oci8\Schema\OracleBlueprint
  • Yajra\Oci8\Schema\OracleBuilder
  • Yajra\Oci8\Schema\Sequence
  • Yajra\Oci8\Schema\Trigger

Traits

  • Yajra\Oci8\OracleReservedWords

Functions

  • config_path
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace Yajra\Oci8\Schema;
  4: 
  5: use Illuminate\Database\Connection;
  6: 
  7: class Sequence
  8: {
  9:     /**
 10:      * @var \Illuminate\Database\Connection|\Yajra\Oci8\Oci8Connection
 11:      */
 12:     protected $connection;
 13: 
 14:     /**
 15:      * @param Connection $connection
 16:      */
 17:     public function __construct(Connection $connection)
 18:     {
 19:         $this->connection = $connection;
 20:     }
 21: 
 22:     /**
 23:      * function to create oracle sequence
 24:      *
 25:      * @param  string $name
 26:      * @param  integer $start
 27:      * @param  boolean $nocache
 28:      * @return boolean
 29:      */
 30:     public function create($name, $start = 1, $nocache = false)
 31:     {
 32:         if (! $name) {
 33:             return false;
 34:         }
 35: 
 36:         $nocache = $nocache ? 'nocache' : '';
 37: 
 38:         return $this->connection->statement("create sequence {$name} start with {$start} {$nocache}");
 39:     }
 40: 
 41:     /**
 42:      * function to safely drop sequence db object
 43:      *
 44:      * @param  string $name
 45:      * @return boolean
 46:      */
 47:     public function drop($name)
 48:     {
 49:         // check if a valid name and sequence exists
 50:         if (! $name || ! $this->exists($name)) {
 51:             return false;
 52:         }
 53: 
 54:         return $this->connection->statement("
 55:             declare
 56:                 e exception;
 57:                 pragma exception_init(e,-02289);
 58:             begin
 59:                 execute immediate 'drop sequence {$name}';
 60:             exception
 61:             when e then
 62:                 null;
 63:             end;");
 64:     }
 65: 
 66:     /**
 67:      * function to check if sequence exists
 68:      *
 69:      * @param  string $name
 70:      * @return boolean
 71:      */
 72:     public function exists($name)
 73:     {
 74:         if (! $name) {
 75:             return false;
 76:         }
 77: 
 78:         return $this->connection->selectOne(
 79:             "select * from all_sequences where sequence_name=upper('{$name}') and sequence_owner=upper(user)"
 80:         );
 81:     }
 82: 
 83:     /**
 84:      * get sequence next value
 85:      *
 86:      * @param  string $name
 87:      * @return integer
 88:      */
 89:     public function nextValue($name)
 90:     {
 91:         if (! $name) {
 92:             return 0;
 93:         }
 94: 
 95:         return $this->connection->selectOne("SELECT $name.NEXTVAL as id FROM DUAL")->id;
 96:     }
 97: 
 98:     /**
 99:      * same function as lastInsertId. added for clarity with oracle sql statement.
100:      *
101:      * @param  string $name
102:      * @return integer
103:      */
104:     public function currentValue($name)
105:     {
106:         return $this->lastInsertId($name);
107:     }
108: 
109:     /**
110:      * function to get oracle sequence last inserted id
111:      *
112:      * @param  string $name
113:      * @return integer
114:      */
115:     public function lastInsertId($name)
116:     {
117:         // check if a valid name and sequence exists
118:         if (! $name || ! $this->exists($name)) {
119:             return 0;
120:         }
121: 
122:         return $this->connection->selectOne("select {$name}.currval as id from dual")->id;
123:     }
124: }
125: 
API documentation generated by ApiGen