您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

1.5. 捷径接口

PostgreSQL 提供一个发往后端的函数调用的捷径接口. 这是一个通向系统内部的后门,因而可能存在安全漏洞. 大多数用户应该不需要这个特性.

  • PQfn 请求允许通过捷径接口执行后端函数.

    PGresult* PQfn(PGconn* conn,
                   int fnid,
                   int *result_buf,
                   int *result_len,
                   int result_is_int,
                   const PQArgBlock *args,
                   int nargs);

    fnid 参数是待执行的函数的对象标识(OID). result_buf 是放置返回值的缓冲区. 调用者必须为返回值分配足够的空间(这里没有检查!). 实际的返回值长度将被放在 result_len 指向的整数里返回. 如果预期返回值是 4-字节整数,把 result_is_int 设为 1; 否则设为 0.(把 result_is_int 设为 1 告诉 libpq 必要时交换数值字节序, 这样就可以正确地传输成客户机上的整数值.当 result_is_int 是 0 时, 后端发送回来的字节串不做修改.) args nargs 声明要传入函数的参数.

    typedef struct {
        int len;
        int isint;
        union {
            int *ptr;
            int integer;
        } u;
    } PQArgBlock;

    PQfn 总是返回一个有效的 PGresult* . 在使用结果之前应该检查 resultStatus. 当结果不再使用后,调用者有义务使用 PQclear 释放 PGresult