SQLExecute

SQLExecuteを使うと,SQL文を実行することができる.SQL文はデータの選択,表の作成,データの挿入,データの更新,データの削除,表の削除に使える.SQLExecuteで使用する文は,すべての引数を含むことのできる文字列である.しかし引数を別々に与えて準備文にすることもできる.SQLExecuteは異なる引数の準備文のバッチでの実行に使用することもできる.これについては「バッチ操作」に記載されている.

SQLExecute[conn,statement,opts]SQL文を実行する
SQLExecute[conn,statement,{args},opts]準備文に引数を与えて実行する
SQLExecute[conn,statement,{{args}},opts]準備文に異なる引数を与えてバッチで実行する

SQL文の実行

次のセクションでは,異なるタイプの操作を実行するSQL文の使い方について述べる.

SQLExecuteには数多くのオプションが使える.

オプション名
デフォルト値
"ColumnSymbols"None結果と関連付けるシンボル
"EscapeProcessing"TrueエスケープしたJDBC関数シンタックスを変換する
"FetchSize"AutomaticJDBCドライバへの結果セットの大きさの提示
"GetAsStrings"False結果を文字列として返すかどうか
"GetGeneratedKeys"False更新されたレコードに関連付けられたキーを返す
"MaxFieldSize"Automatic可変長の列のタイプのバイト制限
"MaxRows"Automatic返される最大行数を設定する
"ShowColumnHeadings"False結果とともに見出しを返すかどうか
"Timeout"$SQLTimeoutクエリのタイムアウトを設定する
"BatchSize"1000パラメータを伴うクエリはこのサイズのバッチごとに処理される
"JavaBatching"TrueWolfram言語層の代りにJava層でパラメータのバッチ処理を行う

SQLExecuteのオプション

これらのオプションの例を以下に示す.DatabaseLink をロードしてdemoデータベースに接続する.このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」 で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.

オプション"GetAsStrings"を使うと,データをWolfram言語型に変換しないで取り出すことができる.

オプション"MaxRows"を使うと,返される行の数が制限できる.

オプション"ShowColumnHeadings"は列見出し付きの結果を求めるときに使う.

オプション"Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができる.

接続を閉じる.

SQLスタイルのクエリにおける引数の列

複数の値の列を保管しているSQL文で引数が1つだけ必要なときは,SQLArgumentが使える.これは多くの列を持つ表の選択と挿入に特に便利である.選択の際は,複数の表と列が動的に選択でき,挿入の際は複数の列の値が動的に指定できる.

SQLArgumentコマンドへの引数の列

引数の列

これを例示するために,DatabaseLink をロードし,publisherデータベースに接続する.

SQLArgumentを使って選択クエリが実行できます.以下の文で2つの引数を引数`1`としてどのように参照しているかに注目されたい.この方法により個々の引数に番号を付ける必要がなくなるため,文が簡単になる.

接続を閉じる.

SQLArgumentはWolfram言語ベースのクエリではサポートされていないことにも注意されたい.