その2SGソフトウェア開発ブログ株式会社エス・ジーの社員が日々のソフトウェア開発で学んだ技術を公開していくブログです。その22016年11月7日月曜日sqliteその1では拡張ライブラリのビルドをしてみたけど、今回は実際に自分で関数を作ってみる。複数の引数を渡されるとそれらの積を返すスカラー関数を作ってみよう。0;}ポイントは以下な感じ。"sqlite3ext.h"をインクルードする。SQLITE_EXTENSION_INIT1マクロを宣言する。これはSQLiteの拡張モジュールを作成するときの決まりごとなので、はじめに書こう。実際はこの中でグローバル変数が定義されていて、後で使うSQLITE_EXTENSION_INIT2で値が代入される。今回、実装するproduct関数の本体だね。Cのmain関数と同様に引数はargcとargvで渡ってくる。今回はsqlite_int64型が渡ってくることを前提として、型チェックは最小限しかしていない。引数からの値の取り出しは型に応じたsqlite3_value_*関数で行う。関数からの戻り値も型に応じたsqlite3_result_*関数で設定する。作成した関数をSQLiteの関数として登録する。最初にSQLITE_EXTENSION_INIT2を呼び出す。sqlite3_create_functionを使って、関数を登録する。第2引数にSQLでの関数名、第3引数に期待する引数の数、第6引数に実行される関数を指定する。今回は引数の数は可変のため-1を指定する。各関数の詳細は以下を参照してほしい。SQLiteこれをその1でやったsqlite-extensionと同じ要領でビルドする。Windowsのコマンドプロンプトで正規表現を使って、文字列置換ファイルや標準出力の内容を文字列置換したいなんてことはよくあるよね。こんなときUnixだと、sedやawkを使うところだけど、Windowsのコマンドプロンプトでは該当するコマンドが用意されていない。バッチに変数の文字列置換をする機能はあることはあるけど、バッチでループを...Javaで空のリストを返すメソッドからコレクションを返す場合、無効な状態を表すのにnullを返すのではなく、要素数0のコレクションを返すのが良い作法とされている。その度に新しいインスタンスを作成するのは無駄なようにも思える。テストデータを作ったので、SQLiteにデータを投入してみよう。テーブルのDDLを作成する。Blogger.QooQ。