如果 SQL 查询存储在跨多行声明的 Tcl 变量中以保持可读性,请使用:
set ::SQL::QueryName {
}
并使用
执行db eval $::SQL::QueryName
是否应该对查询字符串进行某些处理,因为它们将成为准备好的语句缓存中的键?
例如,以续行符
\
结束每一行,使用 append
语句构建,或者在它们上运行某种类型的映射以形成没有不必要空格的单行?
之前没有考虑过它,因为缓存在 Tcl SQLite 中是自动的。
谢谢你。
我不会费心去做那样的聪明事;语句缓存通常是非常高兴的,因为它是在幕后自动发生的事情。只需直接将 SQL 编写为程序文字(显然是第一个选项!),一切都应该很好。
Tcl 的一个原则是,我们尝试使看起来显而易见的代码成为快速代码,并尽可能减少扭曲(因为这使用户更容易采用和适应)。对于快速代码,我们唯一真正的通用规则是“将内容放入过程中”和“在表达式周围放置大括号”。还有一些其他技巧(例如现在命名非常不准确的 K 技巧),但通常不需要它们。这种态度的结果是缓存是透明的,而且事实上相当普遍。它们是 C 扩展的工作,而不是普通的用户代码。
总之,别出汗。说真的。