ruby-oci8 1.0.2-i386-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. data/ChangeLog +569 -0
  2. data/Makefile +51 -0
  3. data/NEWS +322 -0
  4. data/README +415 -0
  5. data/VERSION +1 -0
  6. data/dist-files +70 -0
  7. data/doc/api.en.html +527 -0
  8. data/doc/api.en.rd +554 -0
  9. data/doc/api.ja.html +525 -0
  10. data/doc/api.ja.rd +557 -0
  11. data/doc/manual.css +35 -0
  12. data/ext/oci8/oci8lib.so +0 -0
  13. data/lib/DBD/OCI8/OCI8.rb +549 -0
  14. data/lib/oci8.rb +1605 -0
  15. data/lib/oci8.rb.in +1605 -0
  16. data/metaconfig +142 -0
  17. data/pre-distclean.rb +7 -0
  18. data/ruby-oci8.gemspec +54 -0
  19. data/ruby-oci8.spec +62 -0
  20. data/setup.rb +1331 -0
  21. data/support/README +4 -0
  22. data/support/runit/assert.rb +281 -0
  23. data/support/runit/cui/testrunner.rb +101 -0
  24. data/support/runit/error.rb +4 -0
  25. data/support/runit/method_mappable.rb +20 -0
  26. data/support/runit/robserver.rb +25 -0
  27. data/support/runit/setuppable.rb +15 -0
  28. data/support/runit/teardownable.rb +16 -0
  29. data/support/runit/testcase.rb +113 -0
  30. data/support/runit/testfailure.rb +25 -0
  31. data/support/runit/testresult.rb +121 -0
  32. data/support/runit/testsuite.rb +43 -0
  33. data/support/runit/version.rb +3 -0
  34. data/test/README +4 -0
  35. data/test/config.rb +129 -0
  36. data/test/test_all.rb +43 -0
  37. data/test/test_bind_raw.rb +53 -0
  38. data/test/test_bind_time.rb +191 -0
  39. data/test/test_break.rb +81 -0
  40. data/test/test_clob.rb +101 -0
  41. data/test/test_connstr.rb +80 -0
  42. data/test/test_dbi.rb +317 -0
  43. data/test/test_dbi_clob.rb +56 -0
  44. data/test/test_describe.rb +137 -0
  45. data/test/test_metadata.rb +243 -0
  46. data/test/test_oci8.rb +273 -0
  47. data/test/test_oradate.rb +263 -0
  48. data/test/test_oranumber.rb +149 -0
  49. metadata +97 -0
data/doc/api.ja.rd ADDED
@@ -0,0 +1,557 @@
1
+ =begin
2
+ = Ruby/OCI8 ���API
3
+ [ ((<Home|URL:index.ja.html>)) ] [ ((<English|URL:api.en.html>)) | Japanese ]
4
+
5
+ Ruby/OCI8 ��2���ؤ� API ��ʬ����ޤ����ҤȤĤ�"����API"�ǡ��⤦��Ĥ�"
6
+ ���API"�Ǥ��������ǤϾ��API�λ���ˡ����⤷�ޤ�������ϲ���API�˽�°
7
+ ���륯�饹�Ǥ⡢���API ����Ѥ�����ɬ�פʥ��饹�Ϥ����Dz��⤷�ޤ���
8
+
9
+ "���API"�� ruby �ǽ񤫤줿�饤�֥��ǡ�"����API"�ξ�˹��ۤ���Ƥ���
10
+ ����ʣ���� OCI �ι�¤���ä��ơ��ʤ�٤�ñ��˻Ȥ���褦�ˤ��Ƥ����
11
+ ��������Ū�����ӤǤϤ��� API ����Ѥ��Ƥ���������
12
+
13
+ "����API"�� C ����ǽ񤫤줿�饤�֥��Ǥ���OCI((-Oracle Call
14
+ Interface: ���饯��� C���쥤�󥿡��ե�����-))�Υϥ�ɥ�� ruby �Υ���
15
+ ���ˡ�OCI �δؿ��� ruby �Υ᥽�åɤإޥåԥ󥰤��Ƥ���ޤ���ruby �� C
16
+ ����θ�����ͤΰ㤤�ˤ�ꡢñ��ʥޥåԥ󥰤��Ǥ��ʤ��Ȥ����⤢��ޤ�
17
+ ������ǽ�ʤ����긵�� API ���Ѥ��ʤ��褦�ˤ��Ƥ���ޤ���
18
+
19
+ �С������ 0.2 �Ǥ� C ����Ǥ�äƾ��API��ľ�ܽ�ľ��������API�Ϥʤ�
20
+ �ʤ�ͽ��Ǥ���
21
+
22
+ == �ܼ�
23
+ * ((<���饹����>))
24
+ * ((<OCI8>))
25
+ * ((<OCI8::Cursor>))
26
+ * ((<OCI8::BLOB>))
27
+ * ((<OCI�㳰���饹>))
28
+ * ((<�᥽�åɰ���>))
29
+ * OCI8
30
+ * ((<new|OCI8.new>))(userid, password, dbname = nil, privilege = nil)
31
+ * ((<logoff|OCI8#logoff>))()
32
+ * ((<exec|OCI8#exec>))(sql, *bindvars)
33
+ * ((<parse|OCI8#parse>))(sql)
34
+ * ((<commit|OCI8#commit>))()
35
+ * ((<rollback|OCI8#rollback>))()
36
+ * ((<autocommit?|OCI8#autocommit?>))
37
+ * ((<autocommit|OCI8#autocommit>))
38
+ * ((<autocommit=|OCI8#autocommit=>))
39
+ * ((<non_blocking?|OCI8#non_blocking?>))
40
+ * ((<non_blocking=|OCI8#non_blocking=>))
41
+ * ((<break|OCI8#break>))()
42
+ * OCI8::Cursor
43
+ * ((<define|OCI8::Cursor#define>))(pos, type, length = nil)
44
+ * ((<bind_param|OCI8::Cursor#bind_param>))(key, val, type = nil, length = nil)
45
+ * ((<[]|OCI8::Cursor#[]>))(key)
46
+ * ((<[]=|OCI8::Cursor#[]=>))(key, val)
47
+ * ((<keys|OCI8::Cursor#keys>))()
48
+ * ((<exec|OCI8::Cursor#exec>))(*bindvars)
49
+ * ((<type|OCI8::Cursor#type>))
50
+ * ((<row_count|OCI8::Cursor#row_count>))
51
+ * ((<get_col_names|OCI8::Cursor#get_col_names>))
52
+ * ((<getColNames|OCI8::Cursor#getColNames>))
53
+ * ((<fetch|OCI8::Cursor#fetch>))()
54
+ * ((<close|OCI8::Cursor#close>))()
55
+ * ((<rowid|OCI8::Cursor#rowid>))
56
+ * OCI8::BLOB
57
+ * ((<available?|OCI8::BLOB#available?>))
58
+ * ((<read|OCI8::BLOB#read>))(size = nil)
59
+ * ((<write|OCI8::BLOB#write>))(data)
60
+ * ((<size|OCI8::BLOB#size>))
61
+ * ((<size=|OCI8::BLOB#size=>))(len)
62
+ * ((<chunk_size|OCI8::BLOB#chunk_size>))
63
+ * ((<truncate|OCI8::BLOB#truncate>))(len)
64
+ * ((<pos|OCI8::BLOB#pos>))
65
+ * ((<pos=|OCI8::BLOB#pos=>))(pos)
66
+ * ((<tell|OCI8::BLOB#tell>))
67
+ * ((<seek|OCI8::BLOB#seek>))(pos)
68
+ * ((<rewind|OCI8::BLOB#rewind>))
69
+ * ((<eof?|OCI8::BLOB#eof?>))
70
+ * ((<���>))
71
+ * ((<"�֥��å���/��֥��å��󥰥⡼��">))
72
+ == ���饹����
73
+ ���API��ɬ�ܤʥ��饹�ϡ�((<OCI8>)), ((<OCI8::Cursor>)), ((<OCI8::BLOB>)),
74
+ �����((<OCI�㳰���饹>))�Ǥ���
75
+
76
+ === OCI8
77
+ ���Υ��饹�Υ��󥹥��󥹤ϥǡ����١����ؤ���³���б����ޤ���JDBC ��
78
+ java.sql.Connection, Perl/DBI �� database handle: $dbh ���б����ޤ���
79
+
80
+ ñ��� SQL �μ¹Ԥʤ�С����Υ��饹�ΤߤǼ¹ԤǤ��ޤ���
81
+
82
+ === OCI8::Cursor
83
+ ���Υ��饹�Υ��󥹥��󥹤ϥ��饯����Ѹ�Ǥϥ���������б����ޤ���JDBC
84
+ �� java.sql.Statement, Perl/DBI �� statement handle: $sth ���б����ޤ���
85
+
86
+ ���Υ��饹�Υ��󥹥��󥹤� new �ˤ���������ʤ��Ǥ���������ɬ��
87
+ ((<OCI8#exec>)), ((<OCI8#parse>)) ��ͳ���������Ƥ���������
88
+
89
+ === OCI8::BLOB
90
+ BLOB �ΥХ��ʥ�ǡ������ɤ߽񤭤���Ȥ��˻��Ѥ��륯�饹�Ǥ���
91
+ select ʸ�� BLOB ���Υ��������򤹤�Ȥ��Υ��饹�Υ��󥹥��󥹤���ư
92
+ Ū����������ޤ���
93
+
94
+ === OCI�㳰���饹
95
+ ���API��ɬ�פ��㳰���饹�γ��ؤϰʲ��Τ褦�ˤʤäƤ��ޤ���
96
+
97
+ * ((|OCIException|))
98
+ * ((|OCIError|))
99
+ * ((|OCIInvalidHandle|))
100
+ * ((|OCIBreak|))
101
+
102
+ ((|OCIException|))�� OCI �㳰����ݿƥ��饹�Ǥ���OCI ���㳰�򤹤٤���
103
+ ­�������Ȥ��Ϥ��Υ��饹�� rescue �˻ȤäƤ���������
104
+
105
+ ((|OCIError|))�ϥ��饯��Υ��顼�����ɤĤ����㳰���饹�Ǥ���
106
+ OCIError#message �ǥ�å�������ʸ�����OCIErrror#code �ǥ��顼������
107
+ ������Ǥ��ޤ���
108
+
109
+ ((|OCIInvalidHandle|))��̵���ʥϥ�ɥ���Ф�������Ԥʤä��Ȥ��˵���
110
+ ���㳰�Ǥ���
111
+
112
+ ((|OCIBreak|))��((<��֥��å��󥰥⡼��|"�֥��å���/��֥��å��󥰥⡼��">))
113
+ ���̤Υ���åɤ�� OCI �ƽФ�������󥻥뤵�줿�Ȥ��˵������㳰�Ǥ���
114
+
115
+ == �᥽�åɰ���
116
+ === OCI8
117
+ --- OCI8.new(userid, password, dbname = nil, privilege = nil)
118
+ ((|userid|)), ((|password|)) �Ǥ�äƥ��饯�����³���ޤ���((|dbname|)) �� Net8 ��
119
+ ��³ʸ����Ǥ���DBA ���¤�ɬ�פʾ��� ((|privilege|)) �� :SYSDBA �ޤ�
120
+ �� :SYSOPER����ꤷ�ޤ���
121
+
122
+
123
+ ��:
124
+ # sqlplus scott/tiger@orcl.world
125
+ conn = OCI8.new("scott", "tiger", "orcl.world")
126
+
127
+ ��:
128
+ # sqlplus 'sys/change_on_install as sysdba'
129
+ conn = OCI8.new("sys", "change_on_install", nil, :SYSDBA)
130
+
131
+ --- OCI8#logoff()
132
+ ���饯��Ȥ���³���ڤ�ޤ������ߥåȤ���Ƥʤ��ȥ�󥶥�������
133
+ ������Хå�����ޤ���
134
+
135
+ ��:
136
+ conn = OCI8.new("scott", "tiger")
137
+ ... do something ...
138
+ conn.logoff
139
+
140
+ --- OCI8#exec(sql, *bindvars)
141
+ sql ʸ��¹Ԥ��ޤ���sql ʸ�� SELECTʸ��INSERT/UPDATE/DELETEʸ��
142
+ CREATE/ALTER/DROPʸ��PL/SQLʸ�����줾���������ͤμ��ब�ۤʤ�
143
+ �ޤ���
144
+
145
+ bindvars �������硢�Х�����ѿ��Ȥ��ƥХ���ɤ��Ƥ���¹Ԥ��ޤ���
146
+
147
+ SELECT ʸ�ǥ֥��å����Ĥ��Ƥʤ���硢OCI8::Cursor �Υ��󥹥���
148
+ ���֤��ޤ���
149
+
150
+ ��:
151
+ conn = OCI8.new('scott', 'tiger')
152
+ cursor = conn.exec('SELECT * FROM emp')
153
+ while r = cursor.fetch()
154
+ puts r.join(',')
155
+ end
156
+ cursor.close
157
+ conn.logoff
158
+
159
+ SELECT ʸ�ǥ֥��å����Ĥ��Ƥ����硢���ƥ졼���Ȥ���ư��������
160
+ �����Կ����֤�ޤ����֥��å��ˤϥե��å������ǡ���������Ǥ錄��
161
+ �ޤ���NULL�ͤ� ruby ¦�Ǥ� nil �˥ޥåԥ󥰤��Ƥ���ޤ���
162
+
163
+
164
+ ��:
165
+ conn = OCI8.new('scott', 'tiger')
166
+ num_rows = conn.exec('SELECT * FROM emp') do |r|
167
+ puts r.join(',')
168
+ end
169
+ puts num_rows.to_s + ' rows were processed.'
170
+ conn.logoff
171
+
172
+ INSERT/UPDATE/DELETEʸ�ξ�硢���줾����������Կ����֤�ޤ���
173
+
174
+ ��:
175
+ conn = OCI8.new('scott', 'tiger')
176
+ num_rows = conn.exec('UPDATE emp SET sal = sal * 1.1')
177
+ puts num_rows.to_s + ' rows were updated.'
178
+ conn.logoff
179
+
180
+ CREATE/ALTER/DROPʸ�ξ�硢true ���֤�ޤ���
181
+
182
+ ��:
183
+ conn = OCI8.new('scott', 'tiger')
184
+ conn.exec('CREATE TABLE test (col1 CHAR(6))')
185
+ conn.logoff
186
+
187
+ PL/SQLʸ�ξ�硢�¹Ը�ΥХ�����ѿ����ͤ�����Ȥʤä��֤�ޤ���
188
+
189
+ ��:
190
+ conn = OCI8.new('scott', 'tiger')
191
+ conn.exec("BEGIN :str := TO_CHAR(:num, 'FM0999'); END;", 'ABCD', 123)
192
+ # => ["0123", 123]
193
+ conn.logoff
194
+
195
+ �嵭����Ǥϡ�((|:str|)) �� ((|:num|)) �Ȥ���2�ĤΥХ�����ѿ���
196
+ ����ޤ�������ͤȤ��Ƥ��줾��"��4���ͤ� ABCD ��ʸ����"��"�� 123
197
+ �ο���"�����ꤵ��Ƥ��顢PL/SQLʸ���¹Ԥ��졢�¹Ը�ΥХ�����ѿ�
198
+ ���ͤ�����Ȥ����֤äƤ��ޤ�������ν��֤ϥХ�����ѿ��ν��֤�Ʊ
199
+ ���Ǥ���
200
+
201
+ --- OCI8#parse(sql)
202
+ ����������������sql ʸ�¹Ԥν����򤷤ޤ���OCI8::Cursor �Υ���
203
+ ���󥹤��֤�ޤ���
204
+
205
+ --- OCI8#commit()
206
+ �ȥ�󥶥������򥳥ߥåȤ��ޤ���
207
+
208
+ ��:
209
+ conn = OCI8.new("scott", "tiger")
210
+ conn.exec("UPDATE emp SET sal = sal * 1.1") # yahoo
211
+ conn.commit
212
+ conn.logoff
213
+
214
+ --- OCI8#rollback()
215
+ �ȥ�󥶥������������Хå����ޤ���
216
+
217
+ ��:
218
+ conn = OCI8.new("scott", "tiger")
219
+ conn.exec("UPDATE emp SET sal = sal * 0.9") # boos
220
+ conn.rollback
221
+ conn.logoff
222
+
223
+ --- OCI8#autocommit?
224
+ autocommit �⡼�ɤξ��֤��֤��ޤ����ǥե���Ȥ� false �Ǥ�������
225
+ �ͤ� true �ΤȤ���INSERT/UPDATE/DELETEʸ���¹Ԥ������˼�ưŪ��
226
+ ���ߥåȤ���ޤ���
227
+
228
+ --- OCI8#autocommit
229
+ ((<OCI8#autocommit?>))����̾�Ǥ���
230
+
231
+ --- OCI8#autocommit=
232
+ autocommit �⡼�ɤξ��֤��ѹ����ޤ���true �� flase �����ꤷ�Ƥ���������
233
+
234
+ ��:
235
+ conn = OCI8.new("scott", "tiger")
236
+ conn.autocommit = true
237
+ ... do something ...
238
+ conn.logoff
239
+
240
+ --- OCI8#non_blocking?
241
+ �֥��å���/��֥��å��󥰥⡼�ɤξ��֤��֤��ޤ����ǥե���Ȥ�
242
+ false���Ĥޤ�֥��å��󥰥⡼�ɤǤ���((<"�֥��å���/��֥��å��󥰥⡼��">))
243
+ �򻲾Ȥ��Ƥ���������
244
+
245
+
246
+ --- OCI8#non_blocking=
247
+ �֥��å���/��֥��å��󥰥⡼�ɤξ��֤��ѹ����ޤ���true ��
248
+ flase �����ꤷ�Ƥ���������((<"�֥��å���/��֥��å��󥰥⡼��">))
249
+ �򻲾Ȥ��Ƥ���������
250
+
251
+
252
+ --- OCI8#break()
253
+ �¹����¾����åɤ� OCI �ƽФ��򥭥�󥻥뤷�ޤ������Υ᥽�åɤ�
254
+ �¹Ԥ���ˤ���֥��å��󥰥⡼�ɤǤ���ɬ�פ�����ޤ���
255
+ ((<"�֥��å���/��֥��å��󥰥⡼��">))�򻲾Ȥ��Ƥ���������
256
+
257
+ == OCI8::Cursor
258
+ --- OCI8::Cursor#define(pos, type, length = nil)
259
+
260
+ fetch �Ǽ�������ǡ����η�������Ū�˻��ꤹ�롣parse �� exec �δ�
261
+ �˼¹Ԥ��Ƥ���������pos �� 1 ��������ޤ���length �� type ��
262
+ String ����ꤷ���Ȥ���ͭ���Ǥ���
263
+
264
+ ��:
265
+ cursor = conn.parse("SELECT ename, hiredate FROM emp")
266
+ cursor.define(1, String, 20) # 1������ܤ� String �Ȥ��� fetch
267
+ cursor.define(2, Time) # 2������ܤ� Time �Ȥ��� fetch
268
+ cursor.exec()
269
+
270
+ --- OCI8::Cursor#bind_param(key, val, type = nil, length = nil)
271
+ ����Ū���ѿ���Х���ɤ��ޤ���
272
+
273
+ key �����ͤξ��ϡ��Х�����ѿ��ΰ��֤ˤ�äƥХ���ɤ��ޤ�����
274
+ �֤�1��������ޤ���key ��ʸ����ξ��ϡ��Х�����ѿ���̾���ˤ��
275
+ �ƥХ���ɤ��ޤ���
276
+
277
+ ��:
278
+ cursor = conn.parse("SELECT * FROM emp WHERE ename = :ename")
279
+ cursor.bind_param(1, 'SMITH') # bind by position
280
+ ...or...
281
+ cursor.bind_param(':ename', 'SMITH') # bind by name
282
+
283
+ ���ͤ�Х���ɤ����硢Fixnum �� Float ���ȤäƤ���������Bignum
284
+ �ϻ��ѤǤ��ޤ��󡣽���ͤ� NULL �ˤ�����ϡ�val �� nil �ˤ��ơ�
285
+ type ��Fixnum �� Float �ˤ��Ƥ���������
286
+
287
+ ��:
288
+ cursor.bind_param(1, 1234) # bind as Fixnum, Initial value is 1234.
289
+ cursor.bind_param(1, 1234.0) # bind as Float, Initial value is 1234.0.
290
+ cursor.bind_param(1, nil, Fixnum) # bind as Fixnum, Initial value is NULL.
291
+ cursor.bind_param(1, nil, Float) # bind as Float, Initial value is NULL.
292
+
293
+ ʸ�����Х���ɤ����硢val �ˤ��ΤޤޥХ���ɤ���ʸ������ꤷ
294
+ �Ƥ����������Х���ɤ����ϤȤ��ƻȤ����硢���Ϥ���Τ�ɬ�פ�
295
+ Ĺ����ʸ������ꤹ�뤫��type �� String ����ꤷ����� length ���
296
+ �ꤷ�Ƥ���������
297
+
298
+ ��:
299
+ cursor = conn.parse("BEGIN :out := :in || '_OUT'; END;")
300
+ cursor.bind_param(':in', 'DATA') # bind as String with width 4.
301
+ cursor.bind_param(':out', nil, String, 7) # bind as String with width 7.
302
+ cursor.exec()
303
+ p cursor[':out'] # => 'DATA_OU'
304
+ # PL/SQL�֥��å���Ǥ� :out �� 8�Х��Ȥ�������7��ʸ���Ȥ��ƥХ����
305
+ # ���Ƥ���Τǡ�7�Х����ܤ��ڤ�Ƥ���
306
+
307
+ ʸ����� RAW ���Ȥ��ƥХ���ɤ������ɬ�� type �� OCI8::RAW ��
308
+ ���ꤷ�Ƥ���������
309
+
310
+ ��:
311
+ cursor = conn.parse("INSERT INTO raw_table(raw_column) VALUE (:1)")
312
+ cursor.bind_param(1, 'RAW_STRING', OCI8::RAW)
313
+ cursor.exec()
314
+ cursor.close()
315
+
316
+ --- OCI8::Cursor#[](key)
317
+ �Х�����ѿ����ͤ���Ф��ޤ���
318
+
319
+ ����Ū�˥Х���ɤ�����硢((<OCI8::Cursor#bind_param>))�ǻ��ꤷ��
320
+ key �Ǥ�äƼ��Ф��ޤ������֤ˤ��Х���ɡ�̾���ˤ��Х����
321
+ �����ߤ�����硢Ʊ�����Ǥ���ꤷ���Х������ˡ���б����� key ��
322
+ �Ѥ��Ƥ���������
323
+
324
+ ��:
325
+ cursor = conn.parse("BEGIN :out := 'BAR'; END;")
326
+ cursor.bind_param(':out', 'FOO') # bind by name
327
+ p cursor[':out'] # => 'FOO'
328
+ p cursor[1] # => nil
329
+ cursor.exec()
330
+ p cursor[':out'] # => 'BAR'
331
+ p cursor[1] # => nil
332
+
333
+ ��:
334
+ cursor = conn.parse("BEGIN :out := 'BAR'; END;")
335
+ cursor.bind_param(1, 'FOO') # bind by position
336
+ p cursor[':out'] # => nil
337
+ p cursor[1] # => 'FOO'
338
+ cursor.exec()
339
+ p cursor[':out'] # => nil
340
+ p cursor[1] # => 'BAR'
341
+
342
+ ((<OCI8#exec>))��((<OCI8::Cursor#exec>))����Ѥ��ƥХ���ɤ�����
343
+ �硢�Х�����ѿ��ΰ��֤Ǥ�äƼ������ޤ���
344
+
345
+ ��:
346
+ cursor = conn.exec("BEGIN :out := 'BAR'; END;", 'FOO')
347
+ # 1st bind variable is bound as String with width 3. Its initial value is 'FOO'
348
+ # After execute, the value become 'BAR'.
349
+ p cursor[1] # => 'BAR'
350
+
351
+ --- OCI8::Cursor#[]=(key, val)
352
+ �Х�����ѿ����ͤ����ꤷ�ޤ���key �λ�����ˡ��
353
+ ((<OCI8::Cursor#[]>))��Ʊ���Ǥ���((<OCI8::Cursor#bind_param>))�ǻ�
354
+ �ꤷ�� val �����֤����������Ȥ����ޤ����̤��ͤ��֤������Ʋ��٤�
355
+ ((<OCI8::Cursor#exec>))��¹Ԥ������Ȥ��˻��Ѥ��Ƥ���������
356
+
357
+ �㣱:
358
+ cursor = conn.parse("INSERT INTO test(col1) VALUES(:1)")
359
+ cursor.bind_params(1, nil, String, 3)
360
+ ['FOO', 'BAR', 'BAZ'].each do |key|
361
+ cursor[1] = key
362
+ cursor.exec
363
+ end
364
+ cursor.close()
365
+
366
+ �㣲:
367
+ ['FOO', 'BAR', 'BAZ'].each do |key|
368
+ conn.exec("INSERT INTO test(col1) VALUES(:1)", key)
369
+ end
370
+
371
+ �㣱���㣲�Ϸ�̤�Ʊ���Ǥ������㣱�Τۤ�����٤����ʤ��ʤ�ޤ���
372
+
373
+ --- OCI8::Cursor#keys()
374
+ �Х�����ѿ��� key ������ˤ����֤��ޤ���
375
+
376
+ --- OCI8::Cursor#exec(*bindvars)
377
+ ��������˳����Ƥ�줿 SQL ��¹Ԥ��ޤ���SQL �� SELECTʸ��
378
+ INSERT/UPDATE/DELETEʸ��CREATE/ALTER/DROPʸ��PL/SQLʸ�����줾���
379
+ �������ͤμ��ब�ۤʤ�ޤ���
380
+
381
+
382
+ SELECTʸ�ξ�硢select-list �ο����֤�ޤ���
383
+
384
+ INSERT/UPDATE/DELETEʸ�ξ�硢���줾����������Կ����֤�ޤ���
385
+
386
+ CREATE/ALTER/DROPʸ��PL/SQLʸ�ξ�硢true ���֤�ޤ���
387
+ ((<OCI8#exec>))�Ǥ� PL/SQLʸ�ξ�硢�Х�����ѿ����ͤ�����Ȥʤä�
388
+ �֤�ޤ��������Υ᥽�åɤǤ�ñ�� true ���֤�ޤ����Х�����ѿ���
389
+ �ͤ�((<OCI8::Cursor#[]>))�Ǥ�ä�����Ū�˼������Ƥ���������
390
+
391
+ --- OCI8::Cursor#type
392
+ SQLʸ�μ����������ޤ�������ͤϡ�
393
+ * OCI8::STMT_SELECT
394
+ * OCI8::STMT_UPDATE
395
+ * OCI8::STMT_DELETE
396
+ * OCI8::STMT_INSERT
397
+ * OCI8::STMT_CREATE
398
+ * OCI8::STMT_DROP
399
+ * OCI8::STMT_ALTER
400
+ * OCI8::STMT_BEGIN
401
+ * OCI8::STMT_DECLARE
402
+ �Τɤ줫�Ǥ���PL/SQLʸ�ξ��ϡ�OCI8::STMT_BEGIN ��
403
+ OCI8::STMT_DECLARE �Ȥʤ�ޤ���
404
+
405
+ --- OCI8::Cursor#row_count
406
+ ���������Կ����֤��ޤ���
407
+
408
+ --- OCI8::Cursor#get_col_names
409
+ ����ꥹ�Ȥ�̾��������Ǽ������ޤ���SELECT ʸ�ˤΤ�ͭ���Ǥ���ɬ�� exec ������˻��Ѥ��Ƥ���������
410
+
411
+ --- OCI8::Cursor#getColNames
412
+ ((<OCI8::Cursor#get_col_names>)) �ؤΥ����ꥢ���Ǥ���
413
+
414
+ --- OCI8::Cursor#fetch()
415
+ SELECT ʸ�Τߤ�ͭ���Ǥ����ե��å������ǡ���������Ȥ����֤�ޤ���
416
+
417
+ ��:
418
+ conn = OCI8.new('scott', 'tiger')
419
+ cursor = conn.exec('SELECT * FROM emp')
420
+ while r = cursor.fetch()
421
+ puts r.join(',')
422
+ end
423
+ cursor.close
424
+ conn.logoff
425
+
426
+ --- OCI8::Cursor#close()
427
+ ��������򥯥��������ޤ���
428
+
429
+ --- OCI8::Cursor#rowid
430
+ ���߼¹Ԥ��Ƥ���Ԥ� ROWID ��������ޤ���
431
+ ����������줿�ͤϥХ�����ͤȤ��ƻ��ѤǤ��ޤ���
432
+ �դ˸����ȡ��Х���ɤ�����Ū�ˤ������ѤǤ��ޤ���
433
+
434
+ == OCI8::BLOB
435
+ --- OCI8::BLOB#available?
436
+ BLOB ��ͭ�����ɤ��������å����ޤ���
437
+ BLOB ����Ѥ��뤿��ˤϺǽ�˶���BLOB����������ɬ�פ�����ޤ���
438
+
439
+ ��:
440
+ conn.exec("CREATE TABLE photo (name VARCHAR2(50), image BLOB)")
441
+ conn.exec("INSERT INTO photo VALUES ('null-data', NULL)")
442
+ conn.exec("INSERT INTO photo VALUES ('empty-data', EMPTY_BLOB())")
443
+ conn.exec("SELECT name, image FROM photo") do |name, image|
444
+ case name
445
+ when 'null-data'
446
+ puts "#{name} => #{image.available?.to_s}"
447
+ # => false
448
+ when 'empty-data'
449
+ puts "#{name} => #{image.available?.to_s}"
450
+ # => true
451
+ end
452
+ end
453
+
454
+ --- OCI8::BLOB#read(size = nil)
455
+ BLOB ���ǡ������ɤ߹��ߤޤ���size �λ��꤬�ʤ����ϥǡ����κ�
456
+ ��ޤ��ɤ߹��ߤޤ���
457
+
458
+ �㣱: BLOB �Υ���󥯥���������ɤ߹��ߡ�
459
+ conn.exec("SELECT name, image FROM photo") do |name, image|
460
+ chunk_size = image.chunk_size
461
+ File.open(name, 'w') do |f|
462
+ until image.eof?
463
+ f.write(image.read(chunk_size))
464
+ end
465
+ end
466
+ end
467
+
468
+ �㣲: �����ɤ߹��ߡ�
469
+ conn.exec("SELECT name, image FROM photo") do |name, image|
470
+ File.open(name, 'w') do |f|
471
+ f.write(image.read)
472
+ end
473
+ end
474
+
475
+ --- OCI8::BLOB#write(data)
476
+ BLOB �إǡ�����񤭹��ߤޤ���
477
+ BLOB �˸������äƤ����ǡ�����Ĺ�����񤭹�����ǡ������Ĺ������
478
+ ((<OCI8::BLOB#size=>)) ��Ĺ���κ������ԤäƤ���������
479
+
480
+ �㣱: BLOB �Υ���󥯥�������˽񤭹���
481
+ cursor = conn.parse("INSERT INTO photo VALUES(:name, EMPTY_BLOB())")
482
+ Dir["*.png"].each do |fname|
483
+ cursor.exec(fname)
484
+ end
485
+ conn.exec("SELECT name, image FROM photo") do |name, image|
486
+ chunk_size = image.chunk_size
487
+ File.open(name, 'r') do |f|
488
+ until f.eof?
489
+ image.write(f.read(chunk_size))
490
+ end
491
+ image.size = f.pos
492
+ end
493
+ end
494
+ conn.commit
495
+
496
+ �㣲: ���˽񤭹���
497
+ conn.exec("SELECT name, image FROM photo") do |name, image|
498
+ File.open(name, 'r') do |f|
499
+ image.write(f.read)
500
+ image.size = f.pos
501
+ end
502
+ end
503
+
504
+ --- OCI8::BLOB#size
505
+ BLOB �Υǡ�����Ĺ�����֤��ޤ���
506
+
507
+ --- OCI8::BLOB#size=(len)
508
+ BLOB �Υǡ�����Ĺ���� len �����ꤷ�ޤ���
509
+
510
+ --- OCI8::BLOB#chunk_size
511
+ BLOB �Υ���󥯥��������֤��ޤ���
512
+
513
+ --- OCI8::BLOB#truncate(len)
514
+ BLOB �Υǡ�����Ĺ���� len �����ꤷ�ޤ���
515
+
516
+ --- OCI8::BLOB#pos
517
+ ����� read/write �γ��ϰ��֤��֤��ޤ���
518
+
519
+ --- OCI8::BLOB#pos=(pos)
520
+ ����� read/write �γ��ϰ��֤����ꤷ�ޤ���
521
+
522
+ --- OCI8::BLOB#eof?
523
+ BLOB �κǸ����ã�������ɤ������֤��ޤ���
524
+
525
+ --- OCI8::BLOB#tell
526
+ ((<OCI8::BLOB#pos>)) ��Ʊ���Ǥ���
527
+
528
+ --- OCI8::BLOB#seek(pos)
529
+ ((<OCI8::BLOB#pos=>)) ��Ʊ���Ǥ���
530
+
531
+ --- OCI8::BLOB#rewind
532
+ ����� read/write �γ��ϰ��֤� 0 �����ꤷ�ޤ���
533
+
534
+ == ���
535
+ === �֥��å���/��֥��å��󥰥⡼��
536
+ �ǥե���Ȥϥ֥��å��󥰥⡼�ɤˤʤäƤ��ޤ���((<OCI8#non_blocking=>))
537
+ �ǥ⡼�ɤ��ѹ��Ǥ��ޤ���
538
+
539
+ �֥��å��󥰥⡼�ɤξ�硢�Ť� OCI �θƽФ��򤷤Ƥ���ȡ�����åɤ�Ȥ�
540
+ �Ƥ��Ƥ� ruby ���Τ��֥��å�����ޤ�������ϡ�ruby �Υ���åɤϥͥ��ƥ�
541
+ �֥���åɤǤϤʤ�����Ǥ���
542
+
543
+ ��֥��å��󥰥⡼�ɤξ�硢�Ť� OCI �θƽФ��Ǥ� ruby ���Τϥ֥��å�
544
+ ����ޤ���OCI ��ƽФ��Ƥ��륹��åɤΤߤ��֥��å����ޤ������Τ���ꡢ
545
+ OCI �ƽФ�����λ���Ƥ��뤫�ɤ����ݡ���󥰤ˤ�äƥ����å����Ƥ���Τǡ�
546
+ �ġ��� OCI �ƽФ��������٤��ʤ�ޤ���
547
+
548
+ ((<OCI8#break>)) ���Ѥ���ȡ��̤Υ���åɤ���Ť� OCI �ƽФ��򥭥�󥻥�Ǥ�
549
+ �ޤ�������󥻥뤵�줿����åɤǤ� ((|OCIBreak|)) �Ȥ����㳰��󤲤ޤ���
550
+
551
+ ��֥��å��󥰥⡼�ɤ����»���: �̡��Υ���åɤ�Ʊ����³���Ф���Ʊ����
552
+ OCI �ƽФ���Ԥ�ʤ��Ǥ���������OCI �饤�֥��¦����֥��å��󥰥⡼��
553
+ �Ǥθ�ߤθƽФ����б����Ƥ��뤫�ɤ��������Ǥ������ޤ���ruby �Υ⥸�塼
554
+ ��¦�Ǥ⡢((<OCI8#break>)) ��¹Ԥ����Ȥ��˥���󥻥뤹��OCI �ƽФ���
555
+ ʣ�������硢���ߤμ����Ǥ��б��Ǥ��ޤ���
556
+
557
+ =end