unknown.pltcl
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. #---------------------------------------------------------------------
  2. # Support for unknown command
  3. #---------------------------------------------------------------------
  4. proc unknown {proname args} {
  5.     upvar #0 __PLTcl_unknown_support_plan_modname p_mod
  6.     upvar #0 __PLTcl_unknown_support_plan_modsrc p_src
  7.     #-----------------------------------------------------------
  8.     # On first call prepare the plans
  9.     #-----------------------------------------------------------
  10.     if {![info exists p_mod]} {
  11.         set p_mod [spi_prepare 
  12. "select modname from pltcl_modfuncs
  13.  where funcname = $1" name]
  14.         set p_src [spi_prepare
  15. "select modseq, modsrc from pltcl_modules
  16.  where modname = $1
  17.  order by modseq" name]
  18.     }
  19.     #-----------------------------------------------------------
  20.     # Lookup the requested function in pltcl_modfuncs
  21.     #-----------------------------------------------------------
  22.     set n [spi_execp -count 1 $p_mod [list [quote $proname]]]
  23.     if {$n != 1} {
  24. #-----------------------------------------------------------
  25. # Not found there either - now it's really unknown
  26. #-----------------------------------------------------------
  27.         return -code error "unknown command '$proname'"
  28.     }
  29.     #-----------------------------------------------------------
  30.     # Collect the source pieces from pltcl_modules
  31.     #-----------------------------------------------------------
  32.     set src ""
  33.     spi_execp $p_src [list [quote $modname]] {
  34.         append src $modsrc
  35.     }
  36.     #-----------------------------------------------------------
  37.     # Load the source into the interpreter
  38.     #-----------------------------------------------------------
  39.     if {[catch {
  40.             uplevel #0 "$src"
  41.         } msg]} {
  42. elog NOTICE "pltcl unknown: error while loading module $modname"
  43. elog WARN $msg
  44.     }
  45.     #-----------------------------------------------------------
  46.     # This should never happen
  47.     #-----------------------------------------------------------
  48.     if {[catch {info args $proname}]} {
  49.         return -code error 
  50.     "unknown command '$proname' (still after loading module $modname)"
  51.     }
  52.     #-----------------------------------------------------------
  53.     # Finally simulate the initial procedure call
  54.     #-----------------------------------------------------------
  55.     return [uplevel 1 $proname $args]
  56. }