2

私はlibpqxx自分のプロジェクトで使用しています。どのような SQL ステートメントが実行されるかわからないため、プロジェクトは具体的です。ユーザー入力ステートメントを考えてみましょう:

SELECT * FROM table1

そのステートメントを実行すると、結果レコードが取得され、それを反復処理できます。

for( auto row = myresult.begin(); row != myresult.end(); ++row)
{
    //Here I can access row elements.
}

typeの最初の要素が何であるかがわかっている場合row、それがintであるとしましょう。次のように値を取得できます。

int firstElement = row[0].as<int>();

しかし、私はそれを知りません。メソッドtype()(行要素で呼び出すことができます)とそのreturnタイプoid(ある種の列識別子です)がありますが、その値を使用して行要素のタイプを取得する方法がわかりません。私の質問は:

oidこれを使用して行要素を取得する列挙またはその他の方法はありますtypeか?

4

1 に答える 1

2

Oid は postgres の内部にあります。libpqxx ではありません。入力するだけ

select typname, oid from pg_type;

これは、利用可能なすべてのタイプをリストします。

ソース ファイルの型を使用する場合は、postgres ソースを取得します。 http://doxygen.postgresql.org/include_2catalog_2pg__type_8h_source.html

クリーンな外観を得るには、この構成を参照してください。型名の T_(1 つのアンダースコア) は無視します。

https://github.com/olt/libpq/blob/master/oid/types.go

于 2015-08-30T21:28:41.680 に答える