3

カスタム関数のこの開始時の暫定的なヒントを誰かに教えてもらえますか?

varchar と UNIX タイムスタンプ (整数) の 2 つのパラメーターを使用してクエリを作成する必要があります。以下の数行とこの結果で 3 時間を費やしました。

クエリ テストは select * from pdc_posot_cf_anno('MRDDCU83C12C433F',2012); である可能性があります。SPI_exec に渡す正しい SQL クエリを作成したいだけです。

どうもありがとう。

CREATE FUNCTION pdc_posot_cf_anno(varchar,integer)
RETURNS integer
AS 'pdc','posot_cf_anno'
LANGUAGE C STABLE STRICT;

Datum
posot_cf_anno(PG_FUNCTION_ARGS) {
  char timestring[1024] = "";
  char qanno[1024];
  Timestamp t;
  time_t time = 0;
  int tempo;
  Datum td;
  sprintf(timestring,"%d-01-01",PG_GETARG_INT32(1));
  elog(INFO, "tutto bene %s !",timestring);
  t = DatumGetTimestamp(DirectFunctionCall2(to_timestamp,
                        CStringGetTextDatum(timestring),
                        CStringGetTextDatum("YYYY-MM-DD")));

  sprintf(qanno,"SELECT DISTINCT o.idot FROM sit.otpos o "
                "WHERE btrim(o.codfis) = %s AND to_timestamp(validita) <= %s ORDER BY o.idot;",
          PG_GETARG_CSTRING(0), t);
  elog(INFO, "QUERY %s !",qanno);
//   SPI_connect();
//   res = SPI_exec(qanno,0);

  return 0;
}
4

1 に答える 1