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 {}
+ }
}