pltcl_delmod
上传用户: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_delmod 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 {$i >= $argc || $errors > 0} {
  61.     puts stderr ""
  62.     puts stderr "usage: pltcl_delmod 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 delmodule {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.     pg_result 
  86.         [pg_exec $conn "delete from pltcl_modules where modname = '$xname'"] 
  87. -clear
  88.     pg_result 
  89.         [pg_exec $conn "delete from pltcl_modfuncs where modname = '$xname'"] 
  90. -clear
  91.     puts "Module $modname removed"
  92. }
  93. set conn [eval pg_connect $dbname $options]
  94. while {$i < $argc} {
  95.     delmodule $conn [lindex $argv $i]
  96.     incr i
  97. }
  98. pg_disconnect $conn