class OCI8::Object::Base
def method_missing(method_id, *args)
- Private: -
def method_missing(method_id, *args) if @attributes.is_a? Array return @attributes if method_id == :to_ary super end # getter func if @attributes.has_key?(method_id) if args.length != 0 raise ArgumentError, "wrong number of arguments (#{args.length} for 0)" end return @attributes[method_id] end # setter func method_name = method_id.to_s if method_name[-1] == ?= attr = method_name[0...-1].intern if @attributes.has_key?(attr) if args.length != 1 raise ArgumentError, "wrong number of arguments (#{args.length} for 1)" end return @attributes[attr] = args[0] end end super if @con.nil? tdo = @con.get_tdo_by_class(self.class) return_type = tdo.instance_methods[method_id] if return_type == :none # procedure bind_arg_helper = BindArgumentHelper.new(*args) sql = <<EOS E #{tdo.typename} := :self; #{method_id}(#{bind_arg_helper.arg_str}); f := val; csr = @con.parse_internal(sql) begin csr.bind_param(:self, nil, :named_type_internal, tdo) csr[:self].attributes = self bind_arg_helper.exec(@con, csr) @attributes = csr[:self].attributes ensure csr.close end return nil elsif return_type # function bind_arg_helper = BindArgumentHelper.new(*args) sql = <<EOS E #{tdo.typename} := :self; := val.#{method_id}(#{bind_arg_helper.arg_str}); f := val; csr = @con.parse_internal(sql) begin csr.bind_param(:self, nil, :named_type_internal, tdo) csr.bind_param(:rv, nil, return_type) csr[:self].attributes = self bind_arg_helper.exec(@con, csr) @attributes = csr[:self].attributes rv = csr[:rv] ensure csr.close end return rv end # The method is not found. super end # method_missing