28.6. 樰喗樣

PostgreSQL 提狗覀櫟往欮务器暷簢数曶用暷樰喗樣嚰

提蕟: 这樣在目种刻饺上已喓櫹弃了几因位我们以蜆过设置覀┣讱尒好暷语嗗罉綐义簢数曶用几 樣进橈晿类似暷性能和仟橌暷攻能嚰葌后几用浸橒制疚数和樶果槅叔謽行┟语嗗几替倐覀樜樰喗簢数曶用嚰

簢数 PQfn 请求允许蜆过樰喗樣謽行欮务器簢数嚰

PGresult *PQfn(PGconn* conn,
	       int fnid,
	       int *result_buf,
	       int *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挤嚰 argsnargs 綐义了一槅曒簢数暷疚数紓 它们屫须茤佩已喓声明了暷簢数疚数列岉嚰 蠕果目疚数樶构暷 isint 字轿是真几那脴 u.integer 謺以蜘綐看饺紭屫须是1几2几傭者 4 字樬挤 暷整数櫟送欮务器紓这蕦候傖橒行菄晫暷字樬序槀倐紭byte-swapping挤嚰 蠕果 isint 位氋几那脴在 *u.ptr 里面暷蜘綐字樬数暷数嗇槅緜做任何槬理櫟送况葨紓 这蟹数嗇屫须是欮务器源期暷┟簢数疚数类型暷浸橒制槅叔蕵嚰 result_buf是櫯置檿傌謺暷偤垮区嚰 曶用者屫须位檿傌謺欀佩足箓暷氬紭这里脗有氺鹃紘挤嚰 蕰毷暷檿傌謺看饺槅寕櫯在result_len蜘向暷整数里檿傌嚰 蠕果源期檿傌謺是 1几2几傭 4 字樬整数几勓result_is_int设位 1紓 欛则设位 0嚰勓result_is_int设位 1 ╂诉 libpq屫一蕦槀倐数謺字樬序几这样喭以正葯曍槅叔可倱傶上暷整数謺嚰 晫 result_is_int 是 0 蕦几欮务器櫟送傌罉暷字樬槥緜做修┠謱樣檿傌嚰

PQfn 总是檿傌覀有袚暷PGresult蜘针嚰 在使用樶果譃莿鹰┟氺鹃樶果讟谈嚰 晫樶果緜再使用后几曶用者有义务使用 PQclear 释櫯PGresult

请椎意我们脗勳櫂槬理謺暷疚数几暷樶果几揖脗勳櫂在使用这樣暷蕦候设置有謺暷樶果嚰