接続

odbc connect $DSN $UseName $Password

$DSN
データセット名。大文字,小文字の区別なし。
ユーザ名,パスワードが不要なデータセットの場合は省略可。
$UseName
ユーザー名。 大文字,小文字の区別なし。
$Password
パスワード。大文字,小文字の区別なし。
戻り値
接続番号(0から19まで。それ以外はエラー)。
SqlStatus
戻り値と同じ。

接続は時間がかかるので初期設定で行っておくのが良い。
20個のデータセットと接続可能。
データセット名(DSN)以外の接続方法(接続文字など)は未ポート。

SQL実行

odbc sql $ConnectNo $SQL

$ConnectNo
接続番号。[odbc connect]の戻り値。
接続番号を省略すると直前に接続されたデータセットが採用される。
$SQL
SQLステートメント。
戻り値
1:成功。それ以外はエラー。
SqlStatus
同じ戻り値がセット。

変更された行数を得る

odbc result $ConnectNo

$ConnectNo
接続番号。[odbc connect]の戻り値。
接続番号を省略すると直前に接続されたデータセットが採用される。
戻り値
DELETE,UPDATE,INSERTされた行数。
SqlStatus
同じ戻り値がセット。

行のフェッチ

odbc out $ConnectNo

$ConnectNo
接続番号。[odbc connect]の戻り値。
接続番号を省略すると直前に接続されたデータセットが採用される。
戻り値
フィールド(カラム)数。0以下は失敗。0はNODATA
SqlStatus
同じ戻り値がセット。

SQL実行後に用いる。

フィールド名称を得る

odbc field $ConnectNo

$ConnectNo
接続番号。[odbc connect]の戻り値。接続番号を省略すると直前に接続されたデータセットが採用される。
戻り値
ブランクで区切られたフィールド名のリスト。
SqlStatus
成功:1 エラー:0

最初のout実行後に1回だけ用いる。

フィールド値を文字列変換して取り出す

odbc string $ConnectNo $Size

$ConnectNo
接続番号。[odbc connect]の戻り値。接続番号を省略すると直前に接続されたデータセットが採用される。
$Size
バッファサイズ。省略すると2024バイトが割り当てられる。
戻り値
Tclのリスト形式によるフィールド値のリスト。
SqlStatus
フィールド数がセット。(0はエラー)

out実行後に1回だけ用いる。

切断

odbc close $ConnectNo

$ConnectNo
接続番号。[odbc connect]の戻り値。接続番号を省略すると直前に接続されたデータセットが採用される。
戻り値
NULL文字列

サンプルプログラム

odbc Connect rodas rodas rodas
odbc Sql SELECT * FROM ROSEN_F
odbc Out;                #1行目をフェッチ
if {$SqlStatus > 0 } {
  set field_name [odbc Field]
  puts $field_name;          #フィールド名を表示
  while 1 {
    set line [odbc String]
    puts $line;           #1行プリントアウト
    odbc Out;            #次の行をフェッチ
    if {$SqlStatus<=0} break
  }
}
odbc Close