Posted to tcl by stu at Wed Feb 21 19:17:16 GMT 2018view raw
- proc giantSquid {q} {
- foreach v [lsearch -all -inline [tdbc::tokenize $q] :*] {
- set k [string range $v 1 end]
- uplevel 1 [subst -nocommands {if {![info exists $k]} { error {Billy sez: "My dog's name is: '$k'!"}}}]
- }
- return $q
- }
- # Usage:
- # set query "SELECT COUNT(*) FROM `$table(data)` WHERE `this`=:that AND `command`=:command AND `data`=:insert"
- # if {![$tdbc(1) allrows -as lists [giantSquid $query]]} { ... }
- # Test:
- package require tdbc
- proc z {} {
- set table(data) cow
- set that that
- set command command
- set insert insert
- set q "SELECT COUNT(*) FROM `$table(data)` WHERE `this`=:that AND `command`=:command AND `data`=:insert"
- puts [giantSquid $q]
- };z