Skip to content

Commit 423bd6f

Browse files
authored
Merge pull request rsim#295 from yahonda/extract-procedure-call-predicates
Extract xmltype_argument? and tmp_table_argument? predicates
2 parents f661316 + cd7f721 commit 423bd6f

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

lib/plsql/procedure_call.rb

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
638646
end

0 commit comments

Comments
 (0)