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