私の友人、
C アプリの既存の DB で PostgreSQL libpqtypes ライブラリを使用したいと考えています。
私が実行しなければならない SQL ステートメントの 1 つは、NULL 可能である int 列を持つテーブルへの挿入です。ここでは、単純化して次のように単純化したスキーマがあります。
create table t (
a int null
);
libpqtypes PQputf および PQexecf 関数のドキュメントを読んでいますが、SQL null 値をパラメーター化された SQL ステートメントに渡す方法については言及されていません。
これは int 列であり、DB に格納されている値を 0 ではなく SQL null にしたいため、C NULL 値を渡したくありません。したがって、これを行いたくありません。
PQexecf(conn, "INSERT INTO t (a) VALUES (%int4)", NULL);
PQexecf に渡される挿入 SQL ステートメントのフォーマット文字列を生成するときに null を直接含めることができますが、null 以外の値を挿入する必要がある場合があるため、これを行うことは望ましくありません。だから私はこれをしたくありません:
PQexecf(conn, "INSERT INTO t (a) VALUES (null)");
PQexecf を呼び出すときに 1 つの一般的な形式の SQL 挿入ステートメント文字列を使用し、値がない場合はどうにかして null パラメーター値を渡すことが私の望みであり野心です。SQL_NULL は、DB に SQL null を挿入する必要があることを libpqtypes に伝える何らかの方法です。
void insert(int *a) {
/* Other source codes. */
PQexecf(conn, "INSERT INTO t (a) VALUES (%int4)", a ? *a : SQL_NULL);
/* Other source codes. */
}
これは可能ですか?どうすればいいですか?
たくさん、たくさんありがとう!