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

数据库系统

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. # Start tclsh 
  3. exec tclsh "$0" $@
  4. #
  5. # Code still has to be documented
  6. #
  7. #load /usr/local/pgsql/lib/libpgtcl.so
  8. package require Pgtcl
  9. #
  10. # Check for minimum arguments
  11. #
  12. if {$argc < 1} {
  13.     puts stderr ""
  14.     puts stderr "usage: pltcl_listmod dbname [options] [modulename [...]]"
  15.     puts stderr ""
  16.     puts stderr "options:"
  17.     puts stderr "    -host hostname"
  18.     puts stderr "    -port portnumber"
  19.     puts stderr ""
  20.     exit 1
  21. }
  22. #
  23. # Remember database name and initialize options
  24. #
  25. set dbname [lindex $argv 0]
  26. set options ""
  27. set errors 0
  28. set opt ""
  29. set val ""
  30. set i 1
  31. while {$i < $argc} {
  32.     if {[string compare [string index [lindex $argv $i] 0] "-"] != 0} {
  33.         break;
  34.     }
  35.     set opt [lindex $argv $i]
  36.     incr i
  37.     if {$i >= $argc} {
  38.         puts stderr "no value given for option $opt"
  39. incr errors
  40. continue
  41.     }
  42.     set val [lindex $argv $i]
  43.     incr i
  44.     switch -- $opt {
  45.         -host {
  46.     append options "-host "$val" "
  47. }
  48. -port {
  49.     append options "-port $val "
  50. }
  51. default {
  52.     puts stderr "unknown option '$opt'"
  53.     incr errors
  54. }
  55.     }
  56. }
  57. #
  58. # Final syntax check
  59. #
  60. if {$errors > 0} {
  61.     puts stderr ""
  62.     puts stderr "usage: pltcl_listmod dbname [options] [modulename [...]]"
  63.     puts stderr ""
  64.     puts stderr "options:"
  65.     puts stderr "    -host hostname"
  66.     puts stderr "    -port portnumber"
  67.     puts stderr ""
  68.     exit 1
  69. }
  70. proc listmodule {conn modname} {
  71.     set xname $modname
  72.     regsub -all {\} $xname {\} xname
  73.     regsub -all {'}  $xname {''} xname
  74.     set found 0
  75.     pg_select $conn "select * from pltcl_modules where modname = '$xname'" 
  76.     MOD {
  77.         set found 1
  78. break;
  79.     }
  80.     if {!$found} {
  81.         puts "Module $modname not found in pltcl_modules"
  82. puts ""
  83. return
  84.     }
  85.     puts "Module $modname defines procedures:"
  86.     pg_select $conn "select funcname from pltcl_modfuncs 
  87.     where modname = '$xname' order by funcname" FUNC {
  88.         puts "    $FUNC(funcname)"
  89.     }
  90.     puts ""
  91. }
  92. set conn [eval pg_connect $dbname $options]
  93. if {$i == $argc} {
  94.     pg_select $conn "select distinct modname from pltcl_modules
  95.      order by modname"
  96.      MOD {
  97.         listmodule $conn $MOD(modname)
  98.     }
  99. } else {
  100.     while {$i < $argc} {
  101.         listmodule $conn [lindex $argv $i]
  102. incr i
  103.     }
  104. }
  105. pg_disconnect $conn