我正在修改一些tcl代码,作者在代码中定义了sql语句。
我没有包含数据库连接代码或包需要 tclodbc 语句,但这实际上是我的测试用例的全部流程。
set query "alter table dbo.customer add constraint customer_pk primary key (c_custkey) with (maxdop=$maxdop)"
set maxdop 2
if {[catch {db $query} err] } {
puts "SQL ERROR"
puts [format "ERROR is ===\n%s\n===" $err]
}
但是我想让它更通用一点,并从文件中读取 sql。(这样我可以在不编辑程序的情况下试验 SQL)
所以我尝试了:
set silly_id [open silly.sql" r]
set sql_in [gets $silly.sql]
if {[catch {db $sql_in} err] } {
puts "SQL ERROR"
puts [format "ERROR is ===\n%s\n===" $err]
}
我已经尝试了几乎所有我能想象的 eval 和 subst 组合,但仍然无法让它工作。