sql >> データベース >  >> RDS >> PostgreSQL

型変換。 CのlibpqのPostgreSQLOID値をどうすればよいですか?

    これを聞いて答えを見つけました。基本的に、libpq-fe.hとpostgres.hの横に、catalog/pg_type.hというファイルがあります。 libpq-fe.hとpostgres.hをインクルードした後にインクルードする必要があります。そうすれば、TEXTOIDのような定義にアクセスできます。 、BOOLOIDINT4OID など

    #include <stdio.h>
    #include <postgres.h>
    #include <libpq-fe.h>
    #include <catalog/pg_type.h>
    
    // ... snip ...
    
    if (PQgetisnull(result, row, col)) {
      // value is NULL, nothing more to do
    } else {
      char * value  = PQgetvalue(result, row, col);
      int    length = PQgetlength(result, row, col);
    
      switch (PQftype(result, col)) {
        case INT2OID:
        case INT4OID:
        case INT8OID:
          // process value as an integer
          break;
    
        default:
          // just default to a text representation
      }
    }
    

    実際に広範なリストを作成するには、pg_type.h内のすべてのOIDを確認するか、基本的なSELECT 't'::booleanを実行して何が返されるかをテストする必要があります。 クエリなどを入力し、サポートする新しいタイプが必要な場合にのみスイッチを構築します。



    1. SQLを使用して連続する日付範囲を検出する

    2. Oracleのvarchar2PL/ SQLサブプログラム引数のサイズ制限は何ですか?

    3. Oracle:行が存在しない場合に挿入する方法

    4. SQLケース:3つのあまり知られていない面倒を知って回避する