0

我怎样才能互相显示输出?目前一切都排成一列

bind pub "-|-" !sql pub:test:sql
proc pub:test:sql{ nick host handle channel arg } {

set name "%test%"

sqlite3 pre test.db
set result [pre eval {SELECT * FROM pre WHERE rlsname LIKE $name}]
if {$result == ""} {
putnow "PRIVMSG $channel :empty"
} else {
putnow "PRIVMSG #test :result $result"
set id [lindex [split $result] 0]
set outname [lindex [split $result] 1]
set time [lindex [split $result] 2]
putnow "PRIVMSG #test :$outname $time"
}
}

目前结果如下所示:

[09.02.20/21:00:43:243] <testbot> result 4 1.test.1 1581256802 160 2.test.2 1581262727
[09.02.20/21:00:43:243] <testbot> output 1.test.1 1581256802

这就是它应该看起来的样子:

[09.02.20/21:00:43:243] <testbot> result 4 1.test.1 1581256802
[09.02.20/21:00:43:243] <testbot> result 160 2.test.2 1581262727

非常感谢您的帮助问候

4

1 回答 1

2

如果您希望一次处理一行选定的行,一种选择是使用eval命令的可选参数来指定变量名称和脚本。在这种形式的eval命令中,每一行都以数组的形式分配给变量并执行脚本。在你的情况下:

per eval {select * from PER ...} per_result {
    puts "$per_result(somecolumn1) $per_result(somecolumn2)"
}

或类似的东西,其中数组索引是列名。

有关更多详细信息和示例,请参阅eval 手册页

于 2020-02-10T00:37:39.420 回答