Files
php-doc-ru/reference/oci8/functions/oci-bind-array-by-name.xml
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

247 lines
7.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ed6de1ae20ce16c0c7be0b3fef282b6065bebfac Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.oci-bind-array-by-name" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>oci_bind_array_by_name</refname>
<refpurpose>
Связывает PHP массив с массивом Oracle PL/SQL
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>oci_bind_array_by_name</methodname>
<methodparam><type>resource</type><parameter>statement</parameter></methodparam>
<methodparam><type>string</type><parameter>param</parameter></methodparam>
<methodparam><type>array</type><parameter role="reference">var</parameter></methodparam>
<methodparam><type>int</type><parameter>max_array_length</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>max_item_length</parameter><initializer>-1</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>type</parameter><initializer><constant>SQLT_AFC</constant></initializer></methodparam>
</methodsynopsis>
<para>
Связывает PHP массив <parameter>var</parameter> с указателем Oracle
<parameter>param</parameter> на массив Oracle PL/SQL. Направление, ввод или
вывод, для которого будет использоваться массив будет определяться во время
выполнения.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>statement</parameter></term>
<listitem>
<para>
Идентификатор допустимого OCI выражения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>param</parameter></term>
<listitem>
<para>
Указатель на массив Oracle.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>var</parameter></term>
<listitem>
<para>
Массив.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>max_array_length</parameter></term>
<listitem>
<para>
Задаёт максимальный размер для исходного и результирующего массивов.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>max_item_length</parameter></term>
<listitem>
<para>
Задаёт максимальный размер значений массива. Если не задано или равно
-1, <function>oci_bind_array_by_name</function> найдёт самый большой
элемент в исходном массиве и использует его размер в качестве этой
настройки.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>type</parameter></term>
<listitem>
<para>
Используется для задания типа значений PL/SQL массива.
Смотрите список ниже:
</para>
<para>
<itemizedlist>
<listitem>
<para>
<constant>SQLT_NUM</constant> - для массивов с элементами типа
NUMBER.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_INT</constant> - для массивов с элементами типа
INTEGER (Замечание: INTEGER - синоним для типа NUMBER(38), однако
тип <constant>SQLT_NUM</constant> в этом случае не будет работать,
даже несмотря на то, что они синонимичны).
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_FLT</constant> - для массивов с элементами типа FLOAT.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_AFC</constant> - для массивов с элементами типа CHAR.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_CHR</constant> - для массивов с элементами типа
VARCHAR2.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_VCS</constant> - для массивов с элементами типа
VARCHAR.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_AVC</constant> - для массивов с элементами типа CHARZ.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_STR</constant> - для массивов с элементами типа
STRING.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_LVC</constant> - для массивов с элементами типа
LONG VARCHAR.
</para>
</listitem>
<listitem>
<para>
<constant>SQLT_ODT</constant> - для массивов с элементами типа DATE.
</para>
</listitem>
</itemizedlist>
</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_bind_array_by_name</function></title>
<programlisting role="php">
<![CDATA[
<?php
$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
$m = oci_error();
trigger_error(htmlentities($m['message']), E_USER_ERROR);
}
$create = "CREATE TABLE bind_example(name VARCHAR(20))";
$stid = oci_parse($conn, $create);
oci_execute($stid);
$create_pkg = "
CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
PROCEDURE iobind(c1 IN OUT ARRTYPE);
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg);
oci_execute($stid);
$create_pkg_body = "
CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
CURSOR CUR IS SELECT name FROM bind_example;
PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
BEGIN
-- Bulk Insert
FORALL i IN INDICES OF c1
INSERT INTO bind_example VALUES (c1(i));
-- Fetch and reverse
IF NOT CUR%ISOPEN THEN
OPEN CUR;
END IF;
FOR i IN REVERSE 1..5 LOOP
FETCH CUR INTO c1(i);
IF CUR%NOTFOUND THEN
CLOSE CUR;
EXIT;
END IF;
END LOOP;
END iobind;
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg_body);
oci_execute($stid);
$stid = oci_parse($conn, "BEGIN arraybindpkg1.iobind(:c1); END;");
$array = array("one", "two", "three", "four", "five");
oci_bind_array_by_name($stid, ":c1", $array, 5, -1, SQLT_CHR);
oci_execute($stid);
var_dump($array);
?>
]]>
</programlisting>
</example>
</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
-->