私はいくつかの tcl コードを変更している最中で、作成者はコード内で SQL ステートメントを定義していました。
データベース接続コードやパッケージの require 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 のほぼすべての組み合わせを試しましたが、それでも動作しません。