uTools-Manuals/docs/php/oci_bind_array_by_name.html
2019-04-28 19:00:34 +08:00

204 lines
13 KiB
HTML
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.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Binds a PHP array to an Oracle PL/SQL array parameter</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><div id="function.oci-bind-array-by-name" class="refentry">
<div class="refnamediv">
<h1 class="refname">oci_bind_array_by_name</h1>
<p class="verinfo">(PHP 5 &gt;= 5.1.2, PHP 7, PECL OCI8 &gt;= 1.2.0)</p><p class="refpurpose"><span class="refname">oci_bind_array_by_name</span> &mdash; <span class="dc-title">Binds a PHP array to an Oracle PL/SQL array parameter</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.oci-bind-array-by-name-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>oci_bind_array_by_name</strong></span>
( <span class="methodparam"><span class="type">resource</span> <code class="parameter">$statement</code></span>
, <span class="methodparam"><span class="type">string</span> <code class="parameter">$name</code></span>
, <span class="methodparam"><span class="type">array</span> <code class="parameter reference">&$var_array</code></span>
, <span class="methodparam"><span class="type">int</span> <code class="parameter">$max_table_length</code></span>
[, <span class="methodparam"><span class="type">int</span> <code class="parameter">$max_item_length</code><span class="initializer"> = -1</span></span>
[, <span class="methodparam"><span class="type">int</span> <code class="parameter">$type</code><span class="initializer"> = SQLT_AFC</span></span>
]] ) : <span class="type">bool</span></div>
<p class="para rdfs-comment">
Binds the PHP array <code class="parameter">var_array</code> to the Oracle
placeholder <code class="parameter">name</code>, which points to an Oracle PL/SQL
array. Whether it will be used for input or output will be determined at
run-time.
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.oci-bind-array-by-name-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">statement</code></dt>
<dd>
<p class="para">
A valid OCI statement identifier.
</p>
</dd>
<dt>
<code class="parameter">name</code></dt>
<dd>
<p class="para">
The Oracle placeholder.
</p>
</dd>
<dt>
<code class="parameter">var_array</code></dt>
<dd>
<p class="para">
An array.
</p>
</dd>
<dt>
<code class="parameter">max_table_length</code></dt>
<dd>
<p class="para">
Sets the maximum length both for incoming and result arrays.
</p>
</dd>
<dt>
<code class="parameter">max_item_length</code></dt>
<dd>
<p class="para">
Sets maximum length for array items. If not specified or equals to -1,
<span class="function"><strong>oci_bind_array_by_name()</strong></span> will find the longest
element in the incoming array and will use it as the maximum length.
</p>
</dd>
<dt>
<code class="parameter">type</code></dt>
<dd>
<p class="para">
Should be used to set the type of PL/SQL array items. See list of
available types below:
</p>
<p class="para">
<ul class="itemizedlist">
<li class="listitem">
<p class="para">
<strong><code>SQLT_NUM</code></strong> - for arrays of NUMBER.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_INT</code></strong> - for arrays of INTEGER (Note: INTEGER
it is actually a synonym for NUMBER(38), but
<strong><code>SQLT_NUM</code></strong> type won&#039;t work in this case even
though they are synonyms).
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_FLT</code></strong> - for arrays of FLOAT.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_AFC</code></strong> - for arrays of CHAR.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_CHR</code></strong> - for arrays of VARCHAR2.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_VCS</code></strong> - for arrays of VARCHAR.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_AVC</code></strong> - for arrays of CHARZ.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_STR</code></strong> - for arrays of STRING.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_LVC</code></strong> - for arrays of LONG VARCHAR.
</p>
</li>
<li class="listitem">
<p class="para">
<strong><code>SQLT_ODT</code></strong> - for arrays of DATE.
</p>
</li>
</ul>
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.oci-bind-array-by-name-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
成功时返回 <strong><code>TRUE</code></strong> 或者在失败时返回 <strong><code>FALSE</code></strong>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.oci-bind-array-by-name-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-2377">
<p><strong>Example #1 <span class="function"><strong>oci_bind_array_by_name()</strong></span> example</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$conn&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">"hr"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"hrpwd"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"localhost/XE"</span><span style="color: #007700">);<br />if&nbsp;(!</span><span style="color: #0000BB">$conn</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$m&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_error</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">trigger_error</span><span style="color: #007700">(</span><span style="color: #0000BB">htmlentities</span><span style="color: #007700">(</span><span style="color: #0000BB">$m</span><span style="color: #007700">[</span><span style="color: #DD0000">'message'</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">E_USER_ERROR</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$create&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"CREATE&nbsp;TABLE&nbsp;bind_example(name&nbsp;VARCHAR(20))"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$stid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$create</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">oci_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stid</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$create_pkg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"<br />CREATE&nbsp;OR&nbsp;REPLACE&nbsp;PACKAGE&nbsp;ARRAYBINDPKG1&nbsp;AS<br />&nbsp;&nbsp;TYPE&nbsp;ARRTYPE&nbsp;IS&nbsp;TABLE&nbsp;OF&nbsp;VARCHAR(20)&nbsp;INDEX&nbsp;BY&nbsp;BINARY_INTEGER;<br />&nbsp;&nbsp;PROCEDURE&nbsp;iobind(c1&nbsp;IN&nbsp;OUT&nbsp;ARRTYPE);<br />END&nbsp;ARRAYBINDPKG1;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$stid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$create_pkg</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">oci_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stid</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$create_pkg_body&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"<br />CREATE&nbsp;OR&nbsp;REPLACE&nbsp;PACKAGE&nbsp;BODY&nbsp;ARRAYBINDPKG1&nbsp;AS<br />&nbsp;&nbsp;CURSOR&nbsp;CUR&nbsp;IS&nbsp;SELECT&nbsp;name&nbsp;FROM&nbsp;bind_example;<br />&nbsp;&nbsp;PROCEDURE&nbsp;iobind(c1&nbsp;IN&nbsp;OUT&nbsp;ARRTYPE)&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Bulk&nbsp;Insert<br />&nbsp;&nbsp;&nbsp;&nbsp;FORALL&nbsp;i&nbsp;IN&nbsp;INDICES&nbsp;OF&nbsp;c1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT&nbsp;INTO&nbsp;bind_example&nbsp;VALUES&nbsp;(c1(i));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Fetch&nbsp;and&nbsp;reverse<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;NOT&nbsp;CUR%ISOPEN&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN&nbsp;CUR;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;IF;<br />&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;i&nbsp;IN&nbsp;REVERSE&nbsp;1..5&nbsp;LOOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FETCH&nbsp;CUR&nbsp;INTO&nbsp;c1(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;CUR%NOTFOUND&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLOSE&nbsp;CUR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;IF;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;LOOP;<br />&nbsp;&nbsp;END&nbsp;iobind;<br />END&nbsp;ARRAYBINDPKG1;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$stid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$create_pkg_body</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">oci_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stid</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$stid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_parse</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"BEGIN&nbsp;arraybindpkg1.iobind(:c1);&nbsp;END;"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$array&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">"one"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"two"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"three"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"four"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"five"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">oci_bind_array_by_name</span><span style="color: #007700">(</span><span style="color: #0000BB">$stid</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">":c1"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$array</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SQLT_CHR</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">oci_execute</span><span style="color: #007700">(</span><span style="color: #0000BB">$stid</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
</div>
</div></div></div></body></html>