ruby-oci8 2.1.2-x86-mingw32 → 2.1.3-x86-mingw32
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.
- data/.yardopts +3 -0
- data/COPYING +30 -0
- data/COPYING_old +64 -0
- data/ChangeLog +115 -0
- data/Makefile +8 -4
- data/NEWS +60 -1
- data/README.md +9 -4
- data/VERSION +1 -1
- data/dist-files +5 -0
- data/lib/oci8.rb +32 -19
- data/lib/oci8.rb.in +30 -17
- data/lib/oci8/connection_pool.rb +16 -27
- data/lib/oci8/cursor.rb +564 -0
- data/lib/oci8/datetime.rb +11 -17
- data/lib/oci8/encoding-init.rb +1 -0
- data/lib/oci8/metadata.rb +76 -151
- data/lib/oci8/object.rb +3 -3
- data/lib/oci8/oci8.rb +29 -335
- data/lib/oci8lib_18.map +1091 -1126
- data/lib/oci8lib_18.so +0 -0
- data/lib/oci8lib_191.map +1145 -1197
- data/lib/oci8lib_191.so +0 -0
- data/ruby-oci8.gemspec +1 -0
- data/setup.rb +4 -2
- data/test/config.rb +64 -0
- data/test/setup_test_object.sql +171 -0
- data/test/test_all.rb +1 -0
- data/test/test_break.rb +18 -2
- data/test/test_clob.rb +4 -4
- data/test/test_datetime.rb +8 -47
- data/test/test_metadata.rb +78 -0
- data/test/test_object.rb +463 -0
- data/test/test_oci8.rb +22 -0
- metadata +11 -6
data/lib/oci8/object.rb
CHANGED
@@ -7,7 +7,7 @@ class OCI8
|
|
7
7
|
|
8
8
|
# Returns the type descriptor object which correspond to the given class.
|
9
9
|
#
|
10
|
-
# @param [class of an OCI8::Object::Base's subclass]
|
10
|
+
# @param [class of an OCI8::Object::Base's subclass] klass
|
11
11
|
# @return [OCI8::TDO]
|
12
12
|
#
|
13
13
|
# @private
|
@@ -29,7 +29,7 @@ class OCI8
|
|
29
29
|
|
30
30
|
# Returns the type descriptor object which correspond to the given metadata.
|
31
31
|
#
|
32
|
-
# @param [OCI8::Metadata::Base's subclass]
|
32
|
+
# @param [OCI8::Metadata::Base's subclass] metadata
|
33
33
|
# @return [OCI8::TDO]
|
34
34
|
#
|
35
35
|
# @private
|
@@ -466,7 +466,7 @@ EOS
|
|
466
466
|
when :date
|
467
467
|
[ATTR_OCIDATE, nil, SIZE_OF_OCIDATE, 2, ALIGNMENT_OF_OCIDATE,
|
468
468
|
Proc.new do |val| datetime_to_array(val, :date) end, # set_proc
|
469
|
-
Proc.new do |val|
|
469
|
+
Proc.new do |val| array_to_time(val, :local) end, # get_proc
|
470
470
|
]
|
471
471
|
when :binary_double
|
472
472
|
[ATTR_BINARY_DOUBLE, nil, SIZE_OF_DOUBLE, 2, ALIGNMENT_OF_DOUBLE]
|
data/lib/oci8/oci8.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# oci8.rb --
|
1
|
+
# oci8.rb -- OCI8
|
2
2
|
#
|
3
3
|
# Copyright (C) 2002-2012 KUBO Takehiro <kubo@jiubao.org>
|
4
4
|
#
|
@@ -154,8 +154,8 @@ class OCI8
|
|
154
154
|
end
|
155
155
|
|
156
156
|
allocate_handles()
|
157
|
-
session_handle.send(:attr_set_string, OCI_ATTR_USERNAME, username) if username
|
158
|
-
session_handle.send(:attr_set_string, OCI_ATTR_PASSWORD, password) if password
|
157
|
+
@session_handle.send(:attr_set_string, OCI_ATTR_USERNAME, username) if username
|
158
|
+
@session_handle.send(:attr_set_string, OCI_ATTR_PASSWORD, password) if password
|
159
159
|
server_attach(dbname, attach_mode)
|
160
160
|
session_begin(cred ? cred : OCI_CRED_RDBMS, mode ? mode : OCI_DEFAULT)
|
161
161
|
|
@@ -169,16 +169,18 @@ class OCI8
|
|
169
169
|
@username = nil
|
170
170
|
end
|
171
171
|
|
172
|
-
# call-seq:
|
173
|
-
# parse(sql_text) -> an OCI8::Cursor
|
174
|
-
#
|
175
172
|
# Returns a prepared SQL handle.
|
173
|
+
#
|
174
|
+
# @param [String] sql SQL statement
|
175
|
+
# @return [OCI8::Cursor]
|
176
176
|
def parse(sql)
|
177
177
|
@last_error = nil
|
178
178
|
parse_internal(sql)
|
179
179
|
end
|
180
180
|
|
181
181
|
# same with OCI8#parse except that this doesn't reset OCI8#last_error.
|
182
|
+
#
|
183
|
+
# @private
|
182
184
|
def parse_internal(sql)
|
183
185
|
cursor = OCI8::Cursor.new(self, sql)
|
184
186
|
cursor.prefetch_rows = @prefetch_rows if @prefetch_rows
|
@@ -276,6 +278,8 @@ class OCI8
|
|
276
278
|
end
|
277
279
|
|
278
280
|
# same with OCI8#exec except that this doesn't reset OCI8#last_error.
|
281
|
+
#
|
282
|
+
# @private
|
279
283
|
def exec_internal(sql, *bindvars)
|
280
284
|
begin
|
281
285
|
cursor = parse(sql)
|
@@ -308,9 +312,11 @@ class OCI8
|
|
308
312
|
end
|
309
313
|
end # exec
|
310
314
|
|
311
|
-
#
|
312
|
-
# select_one(sql, *bindvars) -> first_one_row
|
315
|
+
# Executes a SQL statement and fetches the first one row.
|
313
316
|
#
|
317
|
+
# @param [String] sql SQL statement
|
318
|
+
# @param [Object] bindvars bind variables
|
319
|
+
# @return [Array] an array of first row.
|
314
320
|
def select_one(sql, *bindvars)
|
315
321
|
cursor = self.parse(sql)
|
316
322
|
begin
|
@@ -335,12 +341,11 @@ class OCI8
|
|
335
341
|
"#<OCI8:#{username}>"
|
336
342
|
end
|
337
343
|
|
338
|
-
# :call-seq:
|
339
|
-
# oracle_server_version -> oraver
|
340
|
-
#
|
341
344
|
# Returns an OCI8::OracleVersion of the Oracle server version.
|
342
345
|
#
|
343
346
|
# See also: OCI8.oracle_client_version
|
347
|
+
#
|
348
|
+
# @return [OCI8::OracleVersion]
|
344
349
|
def oracle_server_version
|
345
350
|
unless defined? @oracle_server_version
|
346
351
|
if vernum = oracle_server_vernum
|
@@ -360,335 +365,22 @@ class OCI8
|
|
360
365
|
@oracle_server_version
|
361
366
|
end
|
362
367
|
|
363
|
-
#
|
364
|
-
# database_charset_name -> string
|
365
|
-
#
|
366
|
-
# (new in 2.1.0)
|
368
|
+
# Returns the Oracle database character set name.
|
367
369
|
#
|
368
|
-
#
|
370
|
+
# @since 2.1.0
|
371
|
+
# @return [String] Oracle database character set name
|
369
372
|
def database_charset_name
|
370
|
-
charset_id2name(server_handle.send(:attr_get_ub2, OCI_ATTR_CHARSET_ID))
|
373
|
+
charset_id2name(@server_handle.send(:attr_get_ub2, OCI_ATTR_CHARSET_ID))
|
371
374
|
end
|
372
375
|
|
373
|
-
#
|
374
|
-
# OCI8.client_charset_name -> string
|
376
|
+
# Returns the client-side Oracle character set name.
|
375
377
|
#
|
376
|
-
#
|
377
|
-
#
|
378
|
-
# Returns the client character set name.
|
378
|
+
# @since 2.1.0
|
379
|
+
# @return [String] client-side character set name
|
379
380
|
def self.client_charset_name
|
380
381
|
@@client_charset_name
|
381
382
|
end
|
382
|
-
|
383
|
-
# The instance of this class corresponds to cursor in the term of
|
384
|
-
# Oracle, which corresponds to java.sql.Statement of JDBC and statement
|
385
|
-
# handle $sth of Perl/DBI.
|
386
|
-
#
|
387
|
-
# Don't create the instance by calling 'new' method. Please create it by
|
388
|
-
# calling OCI8#exec or OCI8#parse.
|
389
|
-
class Cursor
|
390
|
-
|
391
|
-
# explicitly indicate the date type of fetched value. run this
|
392
|
-
# method within parse and exec. pos starts from 1. lentgh is used
|
393
|
-
# when type is String.
|
394
|
-
#
|
395
|
-
# example:
|
396
|
-
# cursor = conn.parse("SELECT ename, hiredate FROM emp")
|
397
|
-
# cursor.define(1, String, 20) # fetch the first column as String.
|
398
|
-
# cursor.define(2, Time) # fetch the second column as Time.
|
399
|
-
# cursor.exec()
|
400
|
-
def define(pos, type, length = nil)
|
401
|
-
__define(pos, make_bind_object(:type => type, :length => length))
|
402
|
-
self
|
403
|
-
end # define
|
404
|
-
|
405
|
-
# Binds variables explicitly.
|
406
|
-
#
|
407
|
-
# When key is number, it binds by position, which starts from 1.
|
408
|
-
# When key is string, it binds by the name of placeholder.
|
409
|
-
#
|
410
|
-
# example:
|
411
|
-
# cursor = conn.parse("SELECT * FROM emp WHERE ename = :ename")
|
412
|
-
# cursor.bind_param(1, 'SMITH') # bind by position
|
413
|
-
# ...or...
|
414
|
-
# cursor.bind_param(':ename', 'SMITH') # bind by name
|
415
|
-
#
|
416
|
-
# To bind as number, Fixnum and Float are available, but Bignum is
|
417
|
-
# not supported. If its initial value is NULL, please set nil to
|
418
|
-
# +type+ and Fixnum or Float to +val+.
|
419
|
-
#
|
420
|
-
# example:
|
421
|
-
# cursor.bind_param(1, 1234) # bind as Fixnum, Initial value is 1234.
|
422
|
-
# cursor.bind_param(1, 1234.0) # bind as Float, Initial value is 1234.0.
|
423
|
-
# cursor.bind_param(1, nil, Fixnum) # bind as Fixnum, Initial value is NULL.
|
424
|
-
# cursor.bind_param(1, nil, Float) # bind as Float, Initial value is NULL.
|
425
|
-
#
|
426
|
-
# In case of binding a string, set the string itself to
|
427
|
-
# +val+. When the bind variable is used as output, set the
|
428
|
-
# string whose length is enough to store or set the length.
|
429
|
-
#
|
430
|
-
# example:
|
431
|
-
# cursor = conn.parse("BEGIN :out := :in || '_OUT'; END;")
|
432
|
-
# cursor.bind_param(':in', 'DATA') # bind as String with width 4.
|
433
|
-
# cursor.bind_param(':out', nil, String, 7) # bind as String with width 7.
|
434
|
-
# cursor.exec()
|
435
|
-
# p cursor[':out'] # => 'DATA_OU'
|
436
|
-
# # Though the length of :out is 8 bytes in PL/SQL block, it is
|
437
|
-
# # bound as 7 bytes. So result is cut off at 7 byte.
|
438
|
-
#
|
439
|
-
# In case of binding a string as RAW, set OCI::RAW to +type+.
|
440
|
-
#
|
441
|
-
# example:
|
442
|
-
# cursor = conn.parse("INSERT INTO raw_table(raw_column) VALUE (:1)")
|
443
|
-
# cursor.bind_param(1, 'RAW_STRING', OCI8::RAW)
|
444
|
-
# cursor.exec()
|
445
|
-
# cursor.close()
|
446
|
-
def bind_param(key, param, type = nil, length = nil)
|
447
|
-
case param
|
448
|
-
when Hash
|
449
|
-
when Class
|
450
|
-
param = {:value => nil, :type => param, :length => length}
|
451
|
-
else
|
452
|
-
param = {:value => param, :type => type, :length => length}
|
453
|
-
end
|
454
|
-
__bind(key, make_bind_object(param))
|
455
|
-
self
|
456
|
-
end # bind_param
|
457
|
-
|
458
|
-
# Executes the SQL statement assigned the cursor. The type of
|
459
|
-
# return value depends on the type of sql statement: select;
|
460
|
-
# insert, update and delete; create, alter, drop and PL/SQL.
|
461
|
-
#
|
462
|
-
# In case of select statement, it returns the number of the
|
463
|
-
# select-list.
|
464
|
-
#
|
465
|
-
# In case of insert, update or delete statement, it returns the
|
466
|
-
# number of processed rows.
|
467
|
-
#
|
468
|
-
# In case of create, alter, drop and PL/SQL statement, it returns
|
469
|
-
# true. In contrast with OCI8#exec, it returns true even
|
470
|
-
# though PL/SQL. Use OCI8::Cursor#[] explicitly to get bind
|
471
|
-
# variables.
|
472
|
-
def exec(*bindvars)
|
473
|
-
bind_params(*bindvars)
|
474
|
-
__execute(nil) # Pass a nil to specify the statement isn't an Array DML
|
475
|
-
case type
|
476
|
-
when :select_stmt
|
477
|
-
define_columns()
|
478
|
-
else
|
479
|
-
row_count
|
480
|
-
end
|
481
|
-
end # exec
|
482
|
-
|
483
|
-
# Set the maximum array size for bind_param_array
|
484
|
-
#
|
485
|
-
# All the binds will be clean from cursor if instance variable max_array_size is set before
|
486
|
-
#
|
487
|
-
# Instance variable actual_array_size holds the size of the arrays users actually binds through bind_param_array
|
488
|
-
# all the binding arrays are required to be the same size
|
489
|
-
def max_array_size=(size)
|
490
|
-
raise "expect positive number for max_array_size." if size.nil? && size <=0
|
491
|
-
__clearBinds if !@max_array_size.nil?
|
492
|
-
@max_array_size = size
|
493
|
-
@actual_array_size = nil
|
494
|
-
end # max_array_size=
|
495
|
-
|
496
|
-
# Bind array explicitly
|
497
|
-
#
|
498
|
-
# When key is number, it binds by position, which starts from 1.
|
499
|
-
# When key is string, it binds by the name of placeholder.
|
500
|
-
#
|
501
|
-
# The max_array_size should be set before calling bind_param_array
|
502
|
-
#
|
503
|
-
# example:
|
504
|
-
# cursor = conn.parse("INSERT INTO test_table VALUES (:str)")
|
505
|
-
# cursor.max_array_size = 3
|
506
|
-
# cursor.bind_param_array(1, ['happy', 'new', 'year'], String, 30)
|
507
|
-
# cursor.exec_array
|
508
|
-
def bind_param_array(key, var_array, type = nil, max_item_length = nil)
|
509
|
-
raise "please call max_array_size= first." if @max_array_size.nil?
|
510
|
-
raise "expect array as input param for bind_param_array." if !var_array.nil? && !(var_array.is_a? Array)
|
511
|
-
raise "the size of var_array should not be greater than max_array_size." if !var_array.nil? && var_array.size > @max_array_size
|
512
|
-
|
513
|
-
if var_array.nil?
|
514
|
-
raise "all binding arrays should be the same size." unless @actual_array_size.nil? || @actual_array_size == 0
|
515
|
-
@actual_array_size = 0
|
516
|
-
else
|
517
|
-
raise "all binding arrays should be the same size." unless @actual_array_size.nil? || var_array.size == @actual_array_size
|
518
|
-
@actual_array_size = var_array.size if @actual_array_size.nil?
|
519
|
-
end
|
520
|
-
|
521
|
-
param = {:value => var_array, :type => type, :length => max_item_length, :max_array_size => @max_array_size}
|
522
|
-
first_non_nil_elem = var_array.nil? ? nil : var_array.find{|x| x!= nil}
|
523
|
-
|
524
|
-
if type.nil?
|
525
|
-
if first_non_nil_elem.nil?
|
526
|
-
raise "bind type is not given."
|
527
|
-
else
|
528
|
-
type = first_non_nil_elem.class
|
529
|
-
end
|
530
|
-
end
|
531
|
-
|
532
|
-
bindclass = OCI8::BindType::Mapping[type]
|
533
|
-
if bindclass.nil? and type.is_a? Class
|
534
|
-
bindclass = OCI8::BindType::Mapping[type.to_s]
|
535
|
-
OCI8::BindType::Mapping[type] = bindclass if bindclass
|
536
|
-
end
|
537
|
-
raise "unsupported dataType: #{type}" if bindclass.nil?
|
538
|
-
bindobj = bindclass.create(@con, var_array, param, @max_array_size)
|
539
|
-
__bind(key, bindobj)
|
540
|
-
self
|
541
|
-
end # bind_param_array
|
542
|
-
|
543
|
-
# Executes the SQL statement assigned the cursor with array binding
|
544
|
-
def exec_array
|
545
|
-
raise "please call max_array_size= first." if @max_array_size.nil?
|
546
|
-
|
547
|
-
if !@actual_array_size.nil? && @actual_array_size > 0
|
548
|
-
__execute(@actual_array_size)
|
549
|
-
else
|
550
|
-
raise "please set non-nil values to array binding parameters"
|
551
|
-
end
|
552
|
-
|
553
|
-
case type
|
554
|
-
when :update_stmt, :delete_stmt, :insert_stmt
|
555
|
-
row_count
|
556
|
-
else
|
557
|
-
true
|
558
|
-
end
|
559
|
-
end # exec_array
|
560
|
-
|
561
|
-
# Gets the names of select-list as array. Please use this
|
562
|
-
# method after exec.
|
563
|
-
def get_col_names
|
564
|
-
@names ||= @column_metadata.collect { |md| md.name }
|
565
|
-
end # get_col_names
|
566
|
-
|
567
|
-
# call-seq:
|
568
|
-
# column_metadata -> column information
|
569
|
-
#
|
570
|
-
# (new in 1.0.0 and 2.0)
|
571
|
-
#
|
572
|
-
# Gets an array of OCI8::Metadata::Column of a select statement.
|
573
|
-
#
|
574
|
-
# example:
|
575
|
-
# cursor = conn.exec('select * from tab')
|
576
|
-
# puts ' Name Type'
|
577
|
-
# puts ' ----------------------------------------- ----------------------------'
|
578
|
-
# cursor.column_metadata.each do |colinfo|
|
579
|
-
# puts format(' %-41s %s',
|
580
|
-
# colinfo.name,
|
581
|
-
# colinfo.type_string)
|
582
|
-
# end
|
583
|
-
def column_metadata
|
584
|
-
@column_metadata
|
585
|
-
end
|
586
|
-
|
587
|
-
# call-seq:
|
588
|
-
# fetch_hash
|
589
|
-
#
|
590
|
-
# get fetched data as a Hash. The hash keys are column names.
|
591
|
-
# If a block is given, acts as an iterator.
|
592
|
-
def fetch_hash
|
593
|
-
if iterator?
|
594
|
-
while ret = fetch_a_hash_row()
|
595
|
-
yield(ret)
|
596
|
-
end
|
597
|
-
else
|
598
|
-
fetch_a_hash_row
|
599
|
-
end
|
600
|
-
end # fetch_hash
|
601
|
-
|
602
|
-
# close the cursor.
|
603
|
-
def close
|
604
|
-
free()
|
605
|
-
@names = nil
|
606
|
-
@column_metadata = nil
|
607
|
-
end # close
|
608
|
-
|
609
|
-
private
|
610
|
-
|
611
|
-
def make_bind_object(param)
|
612
|
-
case param
|
613
|
-
when Hash
|
614
|
-
key = param[:type]
|
615
|
-
val = param[:value]
|
616
|
-
max_array_size = param[:max_array_size]
|
617
|
-
|
618
|
-
if key.nil?
|
619
|
-
if val.nil?
|
620
|
-
raise "bind type is not given."
|
621
|
-
elsif val.is_a? OCI8::Object::Base
|
622
|
-
key = :named_type
|
623
|
-
param = @con.get_tdo_by_class(val.class)
|
624
|
-
else
|
625
|
-
key = val.class
|
626
|
-
end
|
627
|
-
elsif key.class == Class && key < OCI8::Object::Base
|
628
|
-
param = @con.get_tdo_by_class(key)
|
629
|
-
key = :named_type
|
630
|
-
end
|
631
|
-
when OCI8::Metadata::Base
|
632
|
-
key = param.data_type
|
633
|
-
case key
|
634
|
-
when :named_type
|
635
|
-
if param.type_name == 'XMLTYPE'
|
636
|
-
key = :xmltype
|
637
|
-
else
|
638
|
-
param = @con.get_tdo_by_metadata(param.type_metadata)
|
639
|
-
end
|
640
|
-
end
|
641
|
-
else
|
642
|
-
raise "unknown param #{param.intern}"
|
643
|
-
end
|
644
|
-
|
645
|
-
bindclass = OCI8::BindType::Mapping[key]
|
646
|
-
if bindclass.nil? and key.is_a? Class
|
647
|
-
bindclass = OCI8::BindType::Mapping[key.to_s]
|
648
|
-
OCI8::BindType::Mapping[key] = bindclass if bindclass
|
649
|
-
end
|
650
|
-
raise "unsupported datatype: #{key}" if bindclass.nil?
|
651
|
-
bindclass.create(@con, val, param, max_array_size)
|
652
|
-
end
|
653
|
-
|
654
|
-
def define_columns
|
655
|
-
num_cols = __param_count
|
656
|
-
1.upto(num_cols) do |i|
|
657
|
-
parm = __paramGet(i)
|
658
|
-
define_one_column(i, parm) unless __defined?(i)
|
659
|
-
@column_metadata[i - 1] = parm
|
660
|
-
end
|
661
|
-
num_cols
|
662
|
-
end # define_columns
|
663
|
-
|
664
|
-
def define_one_column(pos, param)
|
665
|
-
__define(pos, make_bind_object(param))
|
666
|
-
end # define_one_column
|
667
|
-
|
668
|
-
def bind_params(*bindvars)
|
669
|
-
bindvars.each_with_index do |val, i|
|
670
|
-
if val.is_a? Array
|
671
|
-
bind_param(i + 1, val[0], val[1], val[2])
|
672
|
-
else
|
673
|
-
bind_param(i + 1, val)
|
674
|
-
end
|
675
|
-
end
|
676
|
-
end # bind_params
|
677
|
-
|
678
|
-
def fetch_a_hash_row
|
679
|
-
if rs = fetch()
|
680
|
-
ret = {}
|
681
|
-
get_col_names.each do |name|
|
682
|
-
ret[name] = rs.shift
|
683
|
-
end
|
684
|
-
ret
|
685
|
-
else
|
686
|
-
nil
|
687
|
-
end
|
688
|
-
end # fetch_a_hash_row
|
689
|
-
|
690
|
-
end # OCI8::Cursor
|
691
|
-
end # OCI8
|
383
|
+
end
|
692
384
|
|
693
385
|
class OraDate
|
694
386
|
|
@@ -779,6 +471,8 @@ end
|
|
779
471
|
|
780
472
|
class Numeric
|
781
473
|
# Converts +self+ to {OraNumber}.
|
474
|
+
#
|
475
|
+
# @return [OraNumber]
|
782
476
|
def to_onum
|
783
477
|
OraNumber.new(self)
|
784
478
|
end
|
@@ -787,7 +481,7 @@ end
|
|
787
481
|
class String # :nodoc:
|
788
482
|
|
789
483
|
# Converts +self+ to {OraNumber}.
|
790
|
-
# Optional <i>
|
484
|
+
# Optional <i>format</i> and <i>nls_params</i> is used as
|
791
485
|
# {http://docs.oracle.com/cd/E11882_01/server.112/e17118/functions211.htm Oracle SQL function TO_NUMBER}
|
792
486
|
# does.
|
793
487
|
#
|
@@ -796,8 +490,8 @@ class String # :nodoc:
|
|
796
490
|
# '123,456.789'.to_onum('999,999,999.999') # => #<OraNumber:123456.789>
|
797
491
|
# '123.456,789'.to_onum('999G999G999D999', "NLS_NUMERIC_CHARACTERS = ',.'") # => #<OraNumber:123456.789>
|
798
492
|
#
|
799
|
-
# @param [String]
|
800
|
-
# @param [String]
|
493
|
+
# @param [String] format
|
494
|
+
# @param [String] nls_params
|
801
495
|
# @return [OraNumber]
|
802
496
|
def to_onum(format = nil, nls_params = nil)
|
803
497
|
OraNumber.new(self, format, nls_params)
|