Index: openacs-4/packages/acs-subsite/tcl/package-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/package-procs-oracle.xql,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-subsite/tcl/package-procs-oracle.xql 17 Mar 2004 00:22:58 -0000 1.9 +++ openacs-4/packages/acs-subsite/tcl/package-procs-oracle.xql 6 Jun 2004 02:28:40 -0000 1.10 @@ -140,12 +140,26 @@ select args.argument_name from user_arguments args where args.position > 0 - and args.object_name = upper(:function_name) + and args.object_name = upper(:object_name) and args.package_name = upper(:package_name) + + + + select 1 + from dual + where exists (select 1 + from user_arguments + where rtrim(package_name) = upper(:package_name) + and rtrim(object_name) = upper(:object_name) + and position = 0) + + + + @@ -259,11 +273,11 @@ sysdate - + BEGIN - :1 := ${package_name}.${function_name}([plsql_utility::generate_attribute_parameter_call \ + :1 := ${package_name}.${object_name}([plsql_utility::generate_attribute_parameter_call \ -prepend ":" \ -indent [expr [string length $package_name] + 29] \ $pieces] @@ -273,5 +287,19 @@ + + + + BEGIN + ${package_name}.${object_name}([plsql_utility::generate_attribute_parameter_call \ + -prepend ":" \ + -indent [expr [string length $package_name] + 29] \ + $pieces] + ); + END; + + + + Index: openacs-4/packages/acs-subsite/tcl/package-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/package-procs-postgresql.xql,v diff -u -N -r1.13 -r1.14 --- openacs-4/packages/acs-subsite/tcl/package-procs-postgresql.xql 17 Mar 2004 00:22:58 -0000 1.13 +++ openacs-4/packages/acs-subsite/tcl/package-procs-postgresql.xql 6 Jun 2004 02:28:40 -0000 1.14 @@ -157,9 +157,15 @@ select args.arg_name from acs_function_args args - where args.function = upper(:package_name) || '__' || upper(:function_name) + where args.function = upper(:package_name) || '__' || upper(:object_name) + + + + select 1 + + @@ -260,12 +266,12 @@ now() - + - select ${package_name}__${function_name}([plpgsql_utility::generate_attribute_parameter_call \ + select ${package_name}__${object_name}([plpgsql_utility::generate_attribute_parameter_call \ -prepend ":" \ - ${package_name}__${function_name} \ + ${package_name}__${object_name} \ $pieces]) Index: openacs-4/packages/acs-subsite/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/package-procs.tcl,v diff -u -N -r1.18 -r1.19 --- openacs-4/packages/acs-subsite/tcl/package-procs.tcl 25 Apr 2004 15:05:08 -0000 1.18 +++ openacs-4/packages/acs-subsite/tcl/package-procs.tcl 6 Jun 2004 02:28:40 -0000 1.19 @@ -633,7 +633,7 @@ ad_proc -private package_plsql_args { - { -function_name "NEW" } + { -object_name "NEW" } package_name } { Generates a list of parameters expected to a plsql function defined within @@ -646,13 +646,20 @@ @param package_name The package which owns the function - @param function_name The function name which we're looking up + @param object_name The function name which we're looking up } { # Get just the args return [db_list select_package_func_param_list {}] } - +ad_proc -private package_function_p { + -object_name:required + package_name +} { + Returns true if the package's object is a function. +} { + return [db_0or1row function_p ""] +} ad_proc -private package_table_columns_for_type { object_type } { @@ -831,6 +838,7 @@ set pieces [list] foreach pair $var_list { + set __key [lindex $pair 0] set __value [lindex $pair 1] if { ![info exists real_params([string toupper $__key])] } { @@ -902,7 +910,7 @@ ad_proc -public package_exec_plsql { { -var_list "" } package_name - function_name + object_name } { Calls a pl/[pg]sql proc/func defined within the object type's package. Use of @@ -913,7 +921,7 @@ @creation-date 12/31/2003 @param package_name The PL/[pg]SQL package - @param function_name The PL/[pg]SQL function within the package + @param object_name The PL/[pg]SQL function within the package @param var_list A list of pairs of additional attributes and their values to pass to the constructor. Each pair is a list of two @@ -931,7 +939,7 @@ } { - foreach arg [util_memoize [list package_plsql_args -function_name $function_name $package_name]] { + foreach arg [util_memoize [list package_plsql_args -object_name $object_name $package_name]] { set real_params([string toupper $arg]) 1 } @@ -949,7 +957,7 @@ if { ![info exists real_params([string toupper $__key])] } { # The parameter is not accepted as a parameter to the # pl/sql function. Ignore it. - ns_log Warning "package_exec_plsql: skipping $__key not found in params for $package_name $function_name" + ns_log Warning "package_exec_plsql: skipping $__key not found in params for $package_name $object_name" continue; } lappend pieces [list $__key] @@ -958,7 +966,11 @@ set $__key $__value } - return [db_exec_plsql exec_plsql {}] + if { [util_memoize [list package_function_p -object_name $object_name $package_name]] } { + return [db_exec_plsql exec_func_plsql {}] + } else { + db_exec_plsql exec_proc_plsql {} + } }