@@ -17,11 +17,7 @@ def initialize(procedure, args = [], options = {})
1717 end
1818
1919 def exec
20- if ENV [ "RUBY_PLSQL_DEBUG" ]
21- $stderr. puts "DEBUG: sql = #{ @sql } "
22- $stderr. puts "DEBUG: bind_values = #{ @bind_values . inspect } "
23- $stderr. puts "DEBUG: bind_metadata = #{ @bind_metadata . inspect } "
24- end
20+ # puts "DEBUG: sql = #{@sql.gsub("\n","<br/>\n")}"
2521 @cursor = @schema . connection . parse ( @sql )
2622
2723 @bind_values . each do |arg , value |
@@ -119,7 +115,7 @@ def get_overload_from_arguments_list(args)
119115 MATCHING_TYPES = {
120116 integer : [ "NUMBER" , "NATURAL" , "NATURALN" , "POSITIVE" , "POSITIVEN" , "SIGNTYPE" , "SIMPLE_INTEGER" , "PLS_INTEGER" , "BINARY_INTEGER" ] ,
121117 decimal : [ "NUMBER" , "BINARY_FLOAT" , "BINARY_DOUBLE" ] ,
122- string : [ "VARCHAR" , "VARCHAR2" , "NVARCHAR2" , "CHAR" , "NCHAR" , "CLOB" , "BLOB" , "XMLTYPE" ] ,
118+ string : [ "VARCHAR" , "VARCHAR2" , "NVARCHAR2" , "CHAR" , "NCHAR" , "CLOB" , "BLOB" , "XMLTYPE" , "OPAQUE/XMLTYPE" ] ,
123119 date : [ "DATE" ] ,
124120 time : [ "DATE" , "TIMESTAMP" , "TIMESTAMP WITH TIME ZONE" , "TIMESTAMP WITH LOCAL TIME ZONE" ] ,
125121 boolean : [ "PL/SQL BOOLEAN" ] ,
@@ -229,7 +225,6 @@ def construct_sql(args)
229225 def add_argument ( argument , value , argument_metadata = nil )
230226 argument_metadata ||= arguments [ argument ]
231227 raise ArgumentError , "Wrong argument #{ argument . inspect } passed to PL/SQL procedure" unless argument_metadata
232- $stderr. puts "DEBUG add_argument: #{ argument } data_type=#{ argument_metadata [ :data_type ] } type_name=#{ argument_metadata [ :type_name ] } sql_type_name=#{ argument_metadata [ :sql_type_name ] } " if ENV [ "RUBY_PLSQL_DEBUG" ]
233228 case argument_metadata [ :data_type ]
234229 when "PL/SQL RECORD"
235230 add_record_declaration ( argument , argument_metadata )
@@ -245,8 +240,8 @@ def add_argument(argument, value, argument_metadata = nil)
245240 @bind_values [ argument ] = value . nil? ? nil : ( value ? 1 : 0 )
246241 @bind_metadata [ argument ] = argument_metadata . merge ( data_type : "NUMBER" , data_precision : 1 )
247242 "l_#{ argument } "
248- when "UNDEFINED" , "XMLTYPE"
249- if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] == " XMLTYPE"
243+ when "UNDEFINED" , "XMLTYPE" , "OPAQUE/XMLTYPE"
244+ if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] =~ / XMLTYPE/
250245 @declare_sql << "l_#{ argument } XMLTYPE;\n "
251246 @assignment_sql << "l_#{ argument } := XMLTYPE(:#{ argument } );\n " if not value . nil?
252247 @bind_values [ argument ] = value if not value . nil?
@@ -400,8 +395,8 @@ def add_return_variable(argument, argument_metadata, is_return_value = false)
400395 end
401396 end
402397 "l_#{ argument } := " if is_return_value
403- when "UNDEFINED" , "XMLTYPE"
404- if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] == " XMLTYPE"
398+ when "UNDEFINED" , "XMLTYPE" , "OPAQUE/XMLTYPE"
399+ if argument_metadata [ :type_name ] == "XMLTYPE" || argument_metadata [ :data_type ] =~ / XMLTYPE/
405400 @declare_sql << "l_#{ argument } XMLTYPE;\n " if is_return_value
406401 bind_variable = :"o_#{ argument } "
407402 @return_vars << bind_variable
0 commit comments