C语言写PostgreSQL函数时,获取参数的对照表
switch (typid) {
case ABSTIMEOID:
elog(NOTICE, "%d", DatumGetAbsoluteTime(dtmp));
break;
case INT8OID:
elog(NOTICE, "%lld", DatumGetInt64(dtmp));
break;
case BOOLOID:
elog(NOTICE, "%d", DatumGetBool(dtmp) ? 1 : 0);
break;
case BOXOID:
elog(NOTICE, "%p", DatumGetBoxP(dtmp));
break;
case BYTEAOID:
elog(NOTICE, "%p", DatumGetByteaP(dtmp));
break;
case CHAROID:
elog(NOTICE, "%c", DatumGetChar(dtmp));
break;
case BPCHAROID:
elog(NOTICE, "%p", DatumGetBpCharP(dtmp));
break;
case CIDOID:
elog(NOTICE, "%d", DatumGetCommandId(dtmp));
break;
case DATEOID:
elog(NOTICE, "%d", DatumGetDateADT(dtmp));
break;
case INT2OID:
elog(NOTICE, "%d", DatumGetInt16(dtmp));
break;
case INT2VECTOROID:
//未找到
break;
case INT4OID:
elog(NOTICE, "%d", DatumGetInt32(dtmp));
break;
case FLOAT4OID:
elog(NOTICE, "%f", DatumGetFloat4(dtmp));
break;
case FLOAT8OID:
elog(NOTICE, "%Lf", DatumGetFloat8(dtmp));
break;
case INTERVALOID:
elog(NOTICE, "%p", DatumGetIntervalP(dtmp));
break;
case LSEGOID:
elog(NOTICE, "%p", DatumGetLsegP(dtmp));
break;
case NAMEOID:
elog(NOTICE, "%p", DatumGetName(dtmp));
break;
case OIDOID:
//未找到
break;
case OIDVECTOROID:
//未找到
break;
case PATHOID:
elog(NOTICE, "%p", DatumGetPathP(dtmp));
break;
case POINTOID:
elog(NOTICE, "%p", DatumGetPointP(dtmp));
break;
case REGPROCOID:
//未找到
break;
case RELTIMEOID:
elog(NOTICE, "%d", DatumGetRelativeTime(dtmp));
break;
case TEXTOID:
elog(NOTICE, "%d", VARDATA_ANY(DatumGetTextP(dtmp)));
break;
case TIDOID:
elog(NOTICE, "%p", DatumGetPointer(dtmp));
break;
case TIMEOID:
elog(NOTICE, "%lld", DatumGetTimeADT(dtmp));
break;
case TIMESTAMPTZOID:
elog(NOTICE, "%lld", DatumGetTimestampTz(dtmp));
break;
case TIMESTAMPOID:
elog(NOTICE, "%lld", DatumGetTimestamp(dtmp));
break;
case TINTERVALOID:
elog(NOTICE, "%p", DatumGetTimeInterval(dtmp));
break;
case VARCHAROID:
elog(NOTICE, "%p", DatumGetVarCharP(dtmp));
break;
case XIDOID:
elog(NOTICE, "%d", DatumGetTransactionId(dtmp));
break;
default:
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("function returning fail(""%s"")!", "unsupported type, please check")));
break;
}