SQLExecute
SQLExecuteを使うと,SQL文を実行することができる.SQL文はデータの選択,表の作成,データの挿入,データの更新,データの削除,表の削除に使える.SQLExecuteで使用する文は,すべての引数を含むことのできる文字列である.しかし引数を別々に与えて準備文にすることもできる.SQLExecuteは異なる引数の準備文のバッチでの実行に使用することもできる.これについては「バッチ操作」に記載されている.
SQLExecute[conn,statement,opts…] | SQL文を実行する |
SQLExecute[conn,statement,{args…},opts…] | 準備文に引数を与えて実行する |
SQLExecute[conn,statement,{{args…}…},opts…] | 準備文に異なる引数を与えてバッチで実行する |
次のセクションでは,異なるタイプの操作を実行するSQL文の使い方について述べる.
SQLExecuteには数多くのオプションが使える.
オプション名
|
デフォルト値
| |
"ColumnSymbols" | None | 結果と関連付けるシンボル |
"EscapeProcessing" | True | エスケープしたJDBC関数シンタックスを変換する |
"FetchSize" | Automatic | JDBCドライバへの結果セットの大きさの提示 |
"GetAsStrings" | False | 結果を文字列として返すかどうか |
"GetGeneratedKeys" | False | 更新されたレコードに関連付けられたキーを返す |
"MaxFieldSize" | Automatic | 可変長の列のタイプのバイト制限 |
"MaxRows" | Automatic | 返される最大行数を設定する |
"ShowColumnHeadings" | False | 結果とともに見出しを返すかどうか |
"Timeout" | $SQLTimeout | クエリのタイムアウトを設定する |
"BatchSize" | 1000 | パラメータを伴うクエリはこのサイズのバッチごとに処理される |
"JavaBatching" | True | Wolfram言語層の代りにJava層でパラメータのバッチ処理を行う |
SQLExecuteのオプション
これらのオプションの例を以下に示す.DatabaseLink をロードしてdemoデータベースに接続する.このチュートリアルの例を実際に試してみて,記載の通りに動作しなかった場合は,「データベースの例の使用」 で述べているように"DatabaseLink`DatabaseExamples`"パッケージを使ってデータベースをもとの状態に戻す必要があるかもしれない.
オプション"GetAsStrings"を使うと,データをWolfram言語型に変換しないで取り出すことができる.
オプション"MaxRows"を使うと,返される行の数が制限できる.
オプション"ShowColumnHeadings"は列見出し付きの結果を求めるときに使う.
オプション"Timeout"を使うと,実行に時間がかかりすぎるクエリをキャンセルすることができる.
SQLスタイルのクエリにおける引数の列
複数の値の列を保管しているSQL文で引数が1つだけ必要なときは,SQLArgumentが使える.これは多くの列を持つ表の選択と挿入に特に便利である.選択の際は,複数の表と列が動的に選択でき,挿入の際は複数の列の値が動的に指定できる.
SQLArgument | コマンドへの引数の列 |
これを例示するために,DatabaseLink をロードし,publisherデータベースに接続する.
SQLArgumentを使って選択クエリが実行できます.以下の文で2つの引数を引数`1`としてどのように参照しているかに注目されたい.この方法により個々の引数に番号を付ける必要がなくなるため,文が簡単になる.
SQLArgumentはWolfram言語ベースのクエリではサポートされていないことにも注意されたい.