@@ -241,7 +241,7 @@ def add_argument(argument, value, argument_metadata = nil)
241241 @bind_metadata [ argument ] = plsql_boolean_metadata ( argument_metadata )
242242 "l_#{ argument } "
243243 when "UNDEFINED" , "XMLTYPE" , "OPAQUE/XMLTYPE"
244- if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] =~ /XMLTYPE/
244+ if xmltype_argument? ( argument_metadata )
245245 @declare_sql << "l_#{ argument } XMLTYPE;\n "
246246 @assignment_sql << "l_#{ argument } := XMLTYPE(:#{ argument } );\n " if not value . nil?
247247 @bind_values [ argument ] = value if not value . nil?
@@ -250,7 +250,7 @@ def add_argument(argument, value, argument_metadata = nil)
250250 end
251251 else
252252 # TABLE or PL/SQL TABLE type defined inside package
253- if argument_metadata [ :tmp_table_name ]
253+ if tmp_table_argument? ( argument_metadata )
254254 add_table_declaration_and_assignment ( argument , argument_metadata )
255255 insert_values_into_tmp_table ( argument , argument_metadata , value )
256256 "l_#{ argument } "
@@ -396,7 +396,7 @@ def add_return_variable(argument, argument_metadata, is_return_value = false)
396396 end
397397 "l_#{ argument } := " if is_return_value
398398 when "UNDEFINED" , "XMLTYPE" , "OPAQUE/XMLTYPE"
399- if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] =~ /XMLTYPE/
399+ if xmltype_argument? ( argument_metadata )
400400 @declare_sql << "l_#{ argument } XMLTYPE;\n " if is_return_value
401401 bind_variable = :"o_#{ argument } "
402402 @return_vars << bind_variable
@@ -417,7 +417,7 @@ def add_return_variable(argument, argument_metadata, is_return_value = false)
417417 ":#{ bind_variable } := o_#{ argument } ;\n "
418418 "l_#{ argument } := " if is_return_value
419419 else
420- if argument_metadata [ :tmp_table_name ]
420+ if tmp_table_argument? ( argument_metadata )
421421 add_return_table ( argument , argument_metadata , is_return_value )
422422 elsif is_return_value
423423 @return_vars << argument
@@ -518,11 +518,11 @@ def return_variable_value(argument, argument_metadata)
518518 numeric_value = @cursor [ ":o_#{ argument } " ]
519519 plsql_boolean_to_ruby_value ( numeric_value )
520520 when "UNDEFINED" , "XMLTYPE" , "OPAQUE/XMLTYPE"
521- if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] =~ /XMLTYPE/
521+ if xmltype_argument? ( argument_metadata )
522522 @cursor [ ":o_#{ argument } " ]
523523 end
524524 else
525- if argument_metadata [ :tmp_table_name ]
525+ if tmp_table_argument? ( argument_metadata )
526526 is_index_by_table = argument_metadata [ :data_type ] == "PL/SQL TABLE"
527527 case argument_metadata [ :element ] [ :data_type ]
528528 when "PL/SQL RECORD"
@@ -634,5 +634,13 @@ def plsql_boolean_to_ruby_value(numeric_value)
634634 def plsql_boolean_metadata ( base_metadata )
635635 base_metadata . merge ( data_type : "NUMBER" , data_precision : 1 )
636636 end
637+
638+ def xmltype_argument? ( metadata )
639+ metadata [ :type_name ] == "XMLTYPE" || metadata [ :data_type ] =~ /XMLTYPE/
640+ end
641+
642+ def tmp_table_argument? ( metadata )
643+ metadata [ :tmp_table_name ]
644+ end
637645 end
638646end
0 commit comments