PostgreSQL C Language Function 常用类型对照

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;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值