sql >> Databáze >  >> RDS >> PostgreSQL

Převod typu. Co mám dělat s hodnotou PostgreSQL OID v libpq v C?

Odpověď jsem našel po tomto dotazu. V podstatě existuje soubor nazvaný katalog/pg_type.h, vedle libpq-fe.h a postgres.h. Po zahrnutí libpq-fe.h a postgres.h musíte zahrnout, pak získáte přístup k definicím jako TEXTOID , BOOLOID , INT4OID atd.

#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
  }
}

Musíte se podívat na všechna OID v pg_type.h, abyste měli skutečně rozsáhlý seznam, nebo jen otestovat, co získáte základním SELECT 't'::boolean zadejte dotazy atd. a vytvořte přepínač pouze v případě, že potřebujete podporu nového typu.



  1. Načtěte data CSV do MySQL v Pythonu

  2. Najít a nahradit text v celé tabulce pomocí dotazu MySQL

  3. Jak Access komunikuje se zdroji dat ODBC? Část 5

  4. Co je špatného na tomto PL/SQL? Bind Variable * NENÍ DEKLAROVÁNO