mirror of
https://github.com/php/doc-ru.git
synced 2025-07-22 18:26:31 +00:00
387 lines
13 KiB
XML
387 lines
13 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: d33a6756e7a94bc06164d2a97bb0a3ffa19e3471 Maintainer: bfl Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.oci-fetch-all" xmlns="http://docbook.org/ns/docbook">
|
||
<refnamediv>
|
||
<refname>oci_fetch_all</refname>
|
||
<refpurpose>Выбирает все строки из результата запроса в двумерный массив</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>int</type><methodname>oci_fetch_all</methodname>
|
||
<methodparam><type>resource</type><parameter>statement</parameter></methodparam>
|
||
<methodparam><type>array</type><parameter role="reference">output</parameter></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>offset</parameter><initializer>0</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>limit</parameter><initializer>-1</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>OCI_FETCHSTATEMENT_BY_COLUMN | OCI_ASSOC</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
Выбирает все строки из результата запроса в двумерный массив.
|
||
По умолчанию возвращает все строки.
|
||
</para>
|
||
<para>
|
||
Эта функция может быть вызваться только один раз для каждого запроса
|
||
запущенного с помощью <function>oci_execute</function>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>statement</parameter></term>
|
||
<listitem>
|
||
&oci.arg.statement.id;
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>output</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Переменная, содержащая возвращённые строки.
|
||
</para>
|
||
<para>
|
||
LOB столбцы возвращаются в виде строк, для которых поддерживается
|
||
Oracle преобразования.
|
||
</para>
|
||
<para>
|
||
Смотрите <function>oci_fetch_array</function> для более детальной
|
||
информации о том, как производится выборка данных и типов.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>offset</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Число строк, которых необходимо исключить из выборки.
|
||
По умолчанию равно 0, выборка возвращается со следующего за
|
||
первым ряда.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>limit</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Число возвращаемых строк. По умолчанию равно -1, что означает
|
||
возврат всех строк, начиная с указанных в <parameter>offset</parameter>
|
||
+ 1 предыдущая строка.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>flags</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Параметр <parameter>flags</parameter> содержит структуру
|
||
массива отражает необходимость использования ассоциативных массивов.
|
||
<table>
|
||
<title>Структура массива <function>oci_fetch_all</function></title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Константа</entry>
|
||
<entry>Описание</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><constant>OCI_FETCHSTATEMENT_BY_ROW</constant></entry>
|
||
<entry>Массив будет содержать по одному под-массиву на каждую
|
||
строку запроса.</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>OCI_FETCHSTATEMENT_BY_COLUMN</constant></entry>
|
||
<entry>Массив будет содержать по одному под-массиву на каждый
|
||
столбец. Используется по умолчанию.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
<para>
|
||
Массивы могут быть проиндексированы или заголовками столбцов или
|
||
пронумерованы. Будет возвращён только один режим индексации.
|
||
<table>
|
||
<title>Индексация массива <function>oci_fetch_all</function></title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Константа</entry>
|
||
<entry>Описание</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><constant>OCI_NUM</constant></entry>
|
||
<entry>Для массива каждого столбца используются числовые индексы.</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>OCI_ASSOC</constant></entry>
|
||
<entry>
|
||
Для массива каждого столбца используется ассоциативные индексы.
|
||
По умолчанию.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
<para>
|
||
Используйте оператор сложения "+" для выбора определённой
|
||
комбинации структуры и индексации массива.
|
||
</para>
|
||
<para>
|
||
Регистронезависимые (по умолчанию в Oracle) имена полей в
|
||
результирующем массиве будут иметь ассоциативные индексы в
|
||
верхнем регистре. Регистрозависимые имена полей будут иметь
|
||
индексы с теми же регистрами символов, что и само поле.
|
||
Используйте <function>var_dump</function> на <parameter>output</parameter>,
|
||
чтобы проверить соответствие регистров символов для каждого запроса.
|
||
</para>
|
||
<para>
|
||
В запросах в которых имеется несколько столбцов с одинаковыми
|
||
именами необходимо использовать псевдонимы. Иначе только один из
|
||
столбцов появится в ассоциативном массиве.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
Возвращает число столбцов в <parameter>output</parameter>, который
|
||
может принимать значение 0 или более.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>Пример использования <function>oci_fetch_all</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
||
if (!$conn) {
|
||
$e = oci_error();
|
||
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
|
||
}
|
||
|
||
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
|
||
oci_execute($stid);
|
||
|
||
$nrows = oci_fetch_all($stid, $res);
|
||
|
||
echo "$nrows строк получено<br>\n";
|
||
var_dump($res);
|
||
|
||
// Вывод var_dump:
|
||
// 2 строк получено
|
||
// array(2) {
|
||
// ["POSTAL_CODE"]=>
|
||
// array(2) {
|
||
// [0]=>
|
||
// string(6) "00989x"
|
||
// [1]=>
|
||
// string(6) "10934x"
|
||
// }
|
||
// ["CITY"]=>
|
||
// array(2) {
|
||
// [0]=>
|
||
// string(4) "Roma"
|
||
// [1]=>
|
||
// string(6) "Venice"
|
||
// }
|
||
// }
|
||
|
||
// Форматирование результатов
|
||
echo "<table border='1'>\n";
|
||
foreach ($res as $col) {
|
||
echo "<tr>\n";
|
||
foreach ($col as $item) {
|
||
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "")."</td>\n";
|
||
}
|
||
echo "</tr>\n";
|
||
}
|
||
echo "</table>\n";
|
||
|
||
oci_free_statement($stid);
|
||
oci_close($conn);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Пример использования <function>oci_fetch_all</function> с <constant>OCI_FETCHSTATEMENT_BY_ROW</constant></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
||
if (!$conn) {
|
||
$e = oci_error();
|
||
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
|
||
}
|
||
|
||
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
|
||
oci_execute($stid);
|
||
|
||
$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);
|
||
|
||
echo "$nrows строк получено<br>\n";
|
||
var_dump($res);
|
||
|
||
// Выведет:
|
||
// 2 строк получено
|
||
// array(2) {
|
||
// [0]=>
|
||
// array(2) {
|
||
// ["POSTAL_CODE"]=>
|
||
// string(6) "00989x"
|
||
// ["CITY"]=>
|
||
// string(4) "Roma"
|
||
// }
|
||
// [1]=>
|
||
// array(2) {
|
||
// ["POSTAL_CODE"]=>
|
||
// string(6) "10934x"
|
||
// ["CITY"]=>
|
||
// string(6) "Venice"
|
||
// }
|
||
// }
|
||
|
||
oci_free_statement($stid);
|
||
oci_close($conn);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Пример использования <function>oci_fetch_all</function> с <constant>OCI_NUM</constant></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
|
||
if (!$conn) {
|
||
$e = oci_error();
|
||
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
|
||
}
|
||
|
||
$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
|
||
oci_execute($stid);
|
||
|
||
$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW + OCI_NUM);
|
||
|
||
echo "$nrows строк получено<br>\n";
|
||
var_dump($res);
|
||
|
||
// Выведет:
|
||
// 2 строк получено
|
||
// array(2) {
|
||
// [0]=>
|
||
// array(2) {
|
||
// [0]=>
|
||
// string(6) "00989x"
|
||
// [1]=>
|
||
// string(4) "Roma"
|
||
// }
|
||
// [1]=>
|
||
// array(2) {
|
||
// [0]=>
|
||
// string(6) "10934x"
|
||
// [1]=>
|
||
// string(6) "Venice"
|
||
// }
|
||
// }
|
||
|
||
oci_free_statement($stid);
|
||
oci_close($conn);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
<note>
|
||
<para>
|
||
Использование <parameter>offset</parameter> неэффективно. Все
|
||
пропускаемые ряды включаются в результат запроса возвращаемый
|
||
базой данных к PHP. После этого они исключаются. Более эффективно
|
||
использовать SQL для отступа и ограничения рядов в запросе. Смотрите
|
||
<function>oci_fetch_array</function> для примеров.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Запросы, возвращающие большое число рядов, могут быть более
|
||
эффективными если используется однорядная функция выборки,
|
||
такая как <function>oci_fetch_array</function>.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
&oci.use.setprefetch;
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Не возвращает ряды для неявных результирующих наборов в Oracle Database 12<emphasis>c</emphasis>.
|
||
Используйте вместо данной функции функцию <function>oci_fetch_array</function>.
|
||
</para>
|
||
</note>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>oci_fetch</function></member>
|
||
<member><function>oci_fetch_array</function></member>
|
||
<member><function>oci_fetch_assoc</function></member>
|
||
<member><function>oci_fetch_object</function></member>
|
||
<member><function>oci_fetch_row</function></member>
|
||
<member><function>oci_set_prefetch</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
|
||
-->
|