SQL ステートメントを実行
sql_q "p1", v1
"p1" : 実行する SQL 文 v1 : 対象レコードセット変数 (省略値 tmparr)
(プラグイン / モジュール : SQLele)
SQL 文を実行します。 p1 で、実行する SQL 文を指定します。 v1 で、結果データを受け取るレコードセット変数を指定します。 SELECT 文などで結果となるレコードセットがある場合、レコードセット変数にレコードデータが取得されます。システム変数 stat には、レコードの行数が返ります。stat が 0 の場合は、レコードがなかったことを表します。 「レコードセット変数」は、2 次元の文字列バッファの配列として初期化されます。この配列変数には、出力データや型情報、カラム名などが格納されています。レコードセット変数は文字列配列として直接参照できるほか、sql_v() を使用すればカラム名を使ったデータ参照ができ、sql_type() を使用すれば元のデータ型を取得することができます。 v1 を省略した場合は、マクロにより変数名 tmparr が設定されます。SQLele のすべての命令・関数では、レコードセット変数の指定を省略した場合、tmparr という変数名が与えられます。そのため、多くの場合レコードセット変数の指定を省略することができます。 p1 で与えるパラメータにバインドを使用する場合は、prm_i(), prm_f(), prm_text(), prm_blob() 関数を使用します。これにより、処理の効率化を図ることができます。 sql_q 命令を実行するためには、sql_open 命令でデータベースが開かれている必要があります。 他のプロセスのトランザクションによってロックされたデータベースに書き込もうとした場合は、ロックが解除されるまで待ってから書き込みが実行されます。 (資料) レコードセット変数のフォーマット データ文字列 = v1(column [0~], record [0~stat-1]) カラム名 = v1(column [0~], stat) 型 = lpeek(v1(column, record), strlen(v1(column, record)) + 4) レコードカウンタ = lpeek(v1(0, 0), strlen(v1(0, 0)) + 8) BLOB サイズ = lpeek(v1(column, record), strlen(v1(column, record)) + 12) BLOB データ = v1(column, record) 16 バイト目以降 レコード数 = length2(v1) - 1 カラム数 = length(v1)
... sql_q "SELECT ID, Val FROM [テーブル]" count = stat mes "件数 = " + count repeat count mes "ID = " + sql_v("ID") + " / Val = " + sql_v("Val") sql_next loop
sql_v | レコードセット変数のデータを参照 | (SQLele) |
sql_i | レコードセット変数から int としてデータ取得 | (SQLele) |
sql_f | レコードセット変数から double としてデータ取得 | (SQLele) |
sql_type | レコードセット変数からデータの型を取得 | (SQLele) |
prm_i | 整数を SQL パラメータとして指定 | (SQLele) |
prm_f | 浮動小数点数を SQL パラメータとして指定 | (SQLele) |
prm_text | 文字列変数をテキスト型の SQL パラメータとして指定 | (SQLele) |
prm_blob | 変数を BLOB 型データの SQL パラメータとして指定 | (SQLele) |
プラグイン / モジュール | SQLele |
バージョン | 1.17 |
作成日 | 2018/06/07 |
著作者 | s.programs |
URL | http://spn.php.xdomain.jp/ |
備考 | sqlele.hsp をインクルードして使用します。実行には sqlite3.dll が必要です。 |
タイプ | ユーザー拡張命令 |
グループ | データベース操作 |
hs ファイル | doclib\SQLele\sqlele.hs |