VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

捷径接口

PQfn

功能描述

提供向服务器发送简单的函数调用的捷径接口,函数PQfn请求允许通过捷径接口执行服务器函数。

接口原型

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

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

参数说明

参数 描述
fnid 待执行的函数的对象标识(OID)
result_buf 放置返回值的缓冲区。调用者必须为返回值分配足够的空间(这里没有检查!)
actual_result_len 实际返回值的长度
result_is_int 如果预期返回值是 1,2 或 4 字节整数,把result_is_int设为 1;否则设为 0。 把result_is_int设为 1 告诉libpq必要时交换数值字节序, 这样就可以正确地传输成客户机上的int值。当result_is_int是 0 时, 服务器发送回来的字节串不做修改直接返回。
args 传递给函数的参数,必须匹配已经声明了的函数参数列表。如果某个参数结构的 isint字段是真,那么u.integer值以指定长度(必须是1,2,或者 4 字节) 的整数发送给服务器;这时候会进行恰当的字节序交换(byte-swapping)。如果isint为假, 那么在*u.ptr里面的指定字节数的数据将不做任何处理发送出去; 这些数据必须是服务器预期的该函数参数类型的二进制传输格式。
nargs 传递给函数的参数个数,必须匹配已经声明了的函数参数列表。

返回值

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

其他

请注意我们没办法处理空值的参数,空的结果,也没办法在使用这个接口的时候设置有值的结果。