mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-26 22:08:55 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@329172 c90b9560-bf6c-de11-be94-00142212c4b1
312 lines
9 KiB
XML
312 lines
9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<refentry xml:id="function.oci-execute" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>oci_execute</refname>
|
|
<refpurpose>Executes a statement</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>bool</type><methodname>oci_execute</methodname>
|
|
<methodparam><type>resource</type><parameter>statement</parameter></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer>OCI_COMMIT_ON_SUCCESS</initializer></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Executes a <parameter>statement</parameter> previously returned
|
|
from <function>oci_parse</function>.
|
|
</para>
|
|
<para>
|
|
After execution, statements like <literal>INSERT</literal> will
|
|
have data committed to the database by default. For statements
|
|
like <literal>SELECT</literal>, execution performs the logic of the
|
|
query. Query results can subsequently be fetched in PHP with
|
|
functions like <function>oci_fetch_array</function>.
|
|
</para>
|
|
<para>
|
|
Each parsed statement may be executed multiple times, saving the
|
|
cost of re-parsing. This is commonly used
|
|
for <literal>INSERT</literal> statements when data is bound
|
|
with <function>oci_bind_by_name</function>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>statement</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
A valid OCI statement identifier.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>mode</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
An optional second parameter can be one of the following constants:
|
|
<table>
|
|
<title>Execution Modes</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Constant</entry>
|
|
<entry>Description</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><constant>OCI_COMMIT_ON_SUCCESS</constant></entry>
|
|
<entry>Automatically commit all outstanding changes for
|
|
this connection when the statement has succeeded. This
|
|
is the default.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>OCI_DESCRIBE_ONLY</constant></entry>
|
|
<entry>Make query meta data available to functions
|
|
like <function>oci_field_name</function> but do not
|
|
create a result set. Any subsequent fetch call such
|
|
as <function>oci_fetch_array</function> will
|
|
fail.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>OCI_NO_AUTO_COMMIT</constant></entry>
|
|
<entry>Do not automatically commit changes. Prior to PHP
|
|
5.3.2 (PECL OCI8 1.4)
|
|
use <constant>OCI_DEFAULT</constant> which is equivalent
|
|
to <constant>OCI_NO_AUTO_COMMIT</constant>.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
<para>
|
|
Using <constant>OCI_NO_AUTO_COMMIT</constant> mode starts or continues a
|
|
transaction. Transactions are automatically rolled back when
|
|
the connection is closed, or when the script ends. Explicitly
|
|
call <function>oci_commit</function> to commit a transaction,
|
|
or <function>oci_rollback</function> to abort it.
|
|
</para>
|
|
<para>
|
|
When inserting or updating data, using transactions is
|
|
recommended for relational data consistency and for performance
|
|
reasons.
|
|
</para>
|
|
<para>
|
|
If <constant>OCI_NO_AUTO_COMMIT</constant> mode is used for any
|
|
statement including queries, and
|
|
<function>oci_commit</function>
|
|
or <function>oci_rollback</function> is not subsequently
|
|
called, then OCI8 will perform a rollback at the end of the
|
|
script even if no data was changed. To avoid an unnecessary
|
|
rollback, many scripts do not
|
|
use <constant>OCI_NO_AUTO_COMMIT</constant> mode for queries or
|
|
PL/SQL. Be careful to ensure the appropriate transactional
|
|
consistency for the application when
|
|
using <function>oci_execute</function> with different modes in
|
|
the same script.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
&return.success;
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title><function>oci_execute</function> for queries</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
|
|
|
$stid = oci_parse($conn, 'SELECT * FROM employees');
|
|
oci_execute($stid);
|
|
|
|
echo "<table border='1'>\n";
|
|
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
|
|
echo "<tr>\n";
|
|
foreach ($row as $item) {
|
|
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
|
|
}
|
|
echo "</tr>\n";
|
|
}
|
|
echo "</table>\n";
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title><function>oci_execute</function> without specifying a mode example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
// Before running, create the table:
|
|
// CREATE TABLE MYTABLE (col1 NUMBER);
|
|
|
|
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
|
|
|
$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');
|
|
|
|
oci_execute($stid); // The row is committed and immediately visible to other users
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title><function>oci_execute</function> with <constant>OCI_NO_AUTO_COMMIT</constant> example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
// Before running, create the table:
|
|
// CREATE TABLE MYTABLE (col1 NUMBER);
|
|
|
|
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
|
|
|
$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (:bv)');
|
|
oci_bind_by_name($stid, ':bv', $i, 10);
|
|
for ($i = 1; $i <= 5; ++$i) {
|
|
oci_execute($stid, OCI_NO_AUTO_COMMIT); // use OCI_DEFAULT for PHP <= 5.3.1
|
|
}
|
|
oci_commit($conn); // commits all new values: 1, 2, 3, 4, 5
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title><function>oci_execute</function> with different commit modes example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
// Before running, create the table:
|
|
// CREATE TABLE MYTABLE (col1 NUMBER);
|
|
|
|
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
|
|
|
$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');
|
|
oci_execute($stid, OCI_NO_AUTO_COMMIT); // data not committed
|
|
|
|
$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (456)');
|
|
oci_execute($stid); // commits both 123 and 456 values
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title><function>oci_execute</function> with
|
|
<constant>OCI_DESCRIBE_ONLY</constant> example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
|
|
|
$stid = oci_parse($conn, 'SELECT * FROM locations');
|
|
oci_execute($s, OCI_DESCRIBE_ONLY);
|
|
for ($i = 1; $i <= oci_num_fields($stid); ++$i) {
|
|
echo oci_field_name($stid, $i) . "<br>\n";
|
|
}
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="notes">
|
|
&reftitle.notes;
|
|
<note>
|
|
<para>
|
|
Transactions are automatically rolled back when connections are
|
|
closed, or when the script ends, whichever is soonest. Explicitly
|
|
call <function>oci_commit</function> to commit a transaction.
|
|
</para>
|
|
<para>
|
|
Any call to <function>oci_execute</function> that uses
|
|
<constant>OCI_COMMIT_ON_SUCCESS</constant> mode explicitly or by
|
|
default will commit any previous uncommitted transaction.
|
|
</para>
|
|
<para>
|
|
Any Oracle DDL statement such as <literal>CREATE</literal>
|
|
or <literal>DROP</literal> will automatically commit any
|
|
uncommitted transaction.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
Because the <function>oci_execute</function> function generally
|
|
sends the statement to the
|
|
database, <function>oci_execute</function> can identify some
|
|
statement syntax errors that the lightweight,
|
|
local <function>oci_parse</function> function does not.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
In PHP versions before 5.0.0 use <function>ociexecute</function>
|
|
instead. &oci.name.compat.note;
|
|
</para>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>oci_parse</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|