-
Notifications
You must be signed in to change notification settings - Fork 62
/
oci-parse.xml
185 lines (164 loc) · 5.06 KB
/
oci-parse.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision$ -->
<!-- EN-Revision: ed6de1ae20ce16c0c7be0b3fef282b6065bebfac Maintainer: shimooka Status: ready -->
<refentry xml:id="function.oci-parse" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>oci_parse</refname>
<refpurpose>実行のために Oracle の文をパースする</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>resource</type><type>false</type></type><methodname>oci_parse</methodname>
<methodparam><type>resource</type><parameter>connection</parameter></methodparam>
<methodparam><type>string</type><parameter>sql</parameter></methodparam>
</methodsynopsis>
<para>
<parameter>connection</parameter>
を使って <parameter>sql</parameter> をパースし、ステートメント ID
を返します。この ID は、<function>oci_bind_by_name</function>,
<function>oci_execute</function> や他の関数で使用されます。
</para>
<para>
ステートメント ID を解放するには、
<function>oci_free_statement</function> を使うか、あるいは
変数に &null; を代入します。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
<para>
<function>oci_connect</function>、<function>oci_pconnect</function>
あるいは <function>oci_new_connect</function>
が返す Oracle 接続 ID。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>sql</parameter></term>
<listitem>
<para>
SQL あるいは PL/SQL ステートメント。
</para>
<para>
SQL の最後にセミコロン (";") をつけては
<emphasis>いけません</emphasis>。一方、PL/SQL ステートメントの最後はセミコロン
(";") を <emphasis>つけなければなりません</emphasis>。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
成功した場合にステートメントハンドル、あるいはエラー時に &false; を返します。
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>oci_parse</function> での SQL 文の例</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
// パースします。SQL 文の最後にはセミコロンがないことに注意しましょう
$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_parse</function> での PL/SQL の例</title>
<programlisting role="php">
<![CDATA[
<?php
/*
この PHP プログラムを実行する前に、SQL*Plus や SQL Developer で
ストアドプロシージャを作っておきます
CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
BEGIN
p2 := p1 * 2;
END;
*/
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$p1 = 8;
// PL/SQL プログラムをパースするには、文字列の最後にセミコロンが必要です
$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid, ':p1', $p1);
oci_bind_by_name($stid, ':p2', $p2, 40);
oci_execute($stid);
print "$p2\n"; // 16 と表示します
oci_free_statement($stid);
oci_close($conn);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
この関数は <parameter>sql</parameter> を検証
<emphasis>しません</emphasis>。
<parameter>sql</parameter> が有効な SQL あるいは PL/SQL
文かどうかを検証する唯一の方法 - それは実行することです。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>oci_execute</function></member>
<member><function>oci_free_statement</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
-->