Documentation

OCI8Statement
in package
implements IteratorAggregate, Statement

The OCI8 implementation of the Statement interface.

Tags
since
2.0
author

Roman Borschel roman@code-factory.org

Interfaces, Classes and Traits

IteratorAggregate
Statement
Statement interface.

Table of Contents

$_conn  : OCI8Connection
$_dbh  : resource
$_defaultFetchMode  : int
$_PARAM  : string
$_paramMap  : array<string|int, mixed>
$_sth  : resource
$fetchModeMap  : array<string|int, mixed>
$boundValues  : array<string|int, mixed>
Holds references to bound parameter values.
$result  : bool
Indicates whether the statement is in the state when fetching results is possible
__construct()  : mixed
Creates a new OCI8Statement that uses the given connection handle and SQL statement.
bindParam()  : bool
Binds a PHP variable to a corresponding named (not supported by mysqli driver, see comment below) or question mark placeholder in the SQL statement that was use to prepare the statement. Unlike PDOStatement->bindValue(), the variable is bound as a reference and will only be evaluated at the time that PDOStatement->execute() is called.
bindValue()  : bool
Binds a value to a corresponding named (not supported by mysqli driver, see comment below) or positional placeholder in the SQL statement that was used to prepare the statement.
closeCursor()  : mixed
{@inheritdoc}
columnCount()  : mixed
{@inheritdoc}
convertPositionalToNamedPlaceholders()  : string
Converts positional (?) into named placeholders (:param<num>).
errorCode()  : string
Fetches the SQLSTATE associated with the last operation on the statement handle.
errorInfo()  : array<string|int, mixed>
Fetches extended error information associated with the last operation on the statement handle.
execute()  : bool
Executes a prepared statement
fetch()  : mixed
{@inheritdoc}
fetchAll()  : mixed
{@inheritdoc}
fetchColumn()  : mixed
{@inheritdoc}
getIterator()  : mixed
{@inheritdoc}
rowCount()  : int
Returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding object.
setFetchMode()  : mixed
{@inheritdoc}

Properties

$_defaultFetchMode

protected int $_defaultFetchMode = PDO::FETCH_BOTH

$_paramMap

protected array<string|int, mixed> $_paramMap = array()

$fetchModeMap

protected static array<string|int, mixed> $fetchModeMap = array(PDO::FETCH_BOTH => OCI_BOTH, PDO::FETCH_ASSOC => OCI_ASSOC, PDO::FETCH_NUM => OCI_NUM, PDO::FETCH_COLUMN => OCI_NUM)

$boundValues

Holds references to bound parameter values.

private array<string|int, mixed> $boundValues = array()

This is a new requirement for PHP7's oci8 extension that prevents bound values from being garbage collected.

$result

Indicates whether the statement is in the state when fetching results is possible

private bool $result = false

Methods

__construct()

Creates a new OCI8Statement that uses the given connection handle and SQL statement.

public __construct(resource $dbh, string $statement, OCI8Connection $conn) : mixed
Parameters
$dbh : resource

The connection handle.

$statement : string

The SQL statement.

$conn : OCI8Connection
Return values
mixed

bindParam()

Binds a PHP variable to a corresponding named (not supported by mysqli driver, see comment below) or question mark placeholder in the SQL statement that was use to prepare the statement. Unlike PDOStatement->bindValue(), the variable is bound as a reference and will only be evaluated at the time that PDOStatement->execute() is called.

public bindParam(mixed $column, mixed &$variable[, mixed $type = null ][, mixed $length = null ]) : bool
Parameters
$column : mixed

Parameter identifier. For a prepared statement using named placeholders, this will be a parameter name of the form :name. For a prepared statement using question mark placeholders, this will be the 1-indexed position of the parameter.

$variable : mixed

Name of the PHP variable to bind to the SQL statement parameter.

$type : mixed = null

Explicit data type for the parameter using the PDO::PARAM_* constants. To return an INOUT parameter from a stored procedure, use the bitwise OR operator to set the PDO::PARAM_INPUT_OUTPUT bits for the data_type parameter.

$length : mixed = null

You must specify maxlength when using an OUT bind so that PHP allocates enough memory to hold the returned value.

Return values
bool

TRUE on success or FALSE on failure.

bindValue()

Binds a value to a corresponding named (not supported by mysqli driver, see comment below) or positional placeholder in the SQL statement that was used to prepare the statement.

public bindValue(mixed $param, mixed $value[, mixed $type = null ]) : bool
Parameters
$param : mixed

Parameter identifier. For a prepared statement using named placeholders, this will be a parameter name of the form :name. For a prepared statement using question mark placeholders, this will be the 1-indexed position of the parameter.

$value : mixed

The value to bind to the parameter.

$type : mixed = null

Explicit data type for the parameter using the PDO::PARAM_* constants.

Return values
bool

TRUE on success or FALSE on failure.

closeCursor()

{@inheritdoc}

public closeCursor() : mixed
Return values
mixed

columnCount()

{@inheritdoc}

public columnCount() : mixed
Return values
mixed

convertPositionalToNamedPlaceholders()

Converts positional (?) into named placeholders (:param<num>).

public static convertPositionalToNamedPlaceholders(string $statement) : string

Oracle does not support positional parameters, hence this method converts all positional parameters into artificially named parameters. Note that this conversion is not perfect. All question marks (?) in the original statement are treated as placeholders and converted to a named parameter.

The algorithm uses a state machine with two possible states: InLiteral and NotInLiteral. Question marks inside literal strings are therefore handled correctly by this method. This comes at a cost, the whole sql statement has to be looped over.

Parameters
$statement : string

The SQL statement to convert.

Tags
todo

extract into utility class in Doctrine\DBAL\Util namespace

todo

review and test for lost spaces. we experienced missing spaces with oci8 in some sql statements.

Return values
string

errorCode()

Fetches the SQLSTATE associated with the last operation on the statement handle.

public errorCode() : string
Return values
string

The error code string.

errorInfo()

Fetches extended error information associated with the last operation on the statement handle.

public errorInfo() : array<string|int, mixed>
Return values
array<string|int, mixed>

The error info array.

execute()

Executes a prepared statement

public execute([mixed $params = null ]) : bool
Parameters
$params : mixed = null

An array of values with as many elements as there are bound parameters in the SQL statement being executed.

Return values
bool

TRUE on success or FALSE on failure.

fetch()

{@inheritdoc}

public fetch([mixed $fetchMode = null ]) : mixed
Parameters
$fetchMode : mixed = null
Return values
mixed

fetchAll()

{@inheritdoc}

public fetchAll([mixed $fetchMode = null ]) : mixed
Parameters
$fetchMode : mixed = null
Return values
mixed

fetchColumn()

{@inheritdoc}

public fetchColumn(mixed $columnIndex) : mixed
Parameters
$columnIndex : mixed
Return values
mixed

getIterator()

{@inheritdoc}

public getIterator() : mixed
Return values
mixed

rowCount()

Returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding object.

public rowCount() : int
Return values
int

The number of rows.

setFetchMode()

{@inheritdoc}

public setFetchMode(mixed $fetchMode[, mixed $arg2 = null ][, mixed $arg3 = null ]) : mixed
Parameters
$fetchMode : mixed
$arg2 : mixed = null
$arg3 : mixed = null
Return values
mixed

Search results