PostgreSQL7.0手册-程序员手册 -48. 服务器编程接口
语法
SPI_copytuple(tuple)
输入
HeapTuple tuple
Input tuple to be copied
Outputs
HeapTuple
输入被拷贝的记录
non-NULL 如果 tuple 为非空(not NULL)并且拷贝成功
NULL 只有 tuple 是 NULL
描述
SPI_copytuple 把一个记录的拷贝放到上层高级执行器环境.参考存储器管理章节.
用法
TBD
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_modifytuple
名称
SPI_modifytuple — 修改关系的记录
语法
SPI_modifytuple(rel, tuple , nattrs
, attnum , Values , Nulls)
输入
Relation rel
HeapTuple tuple
要修改的输入记录
int nattrs
attnum 里字段号的个数
int * attnum
将要修改的字段号的数组
Datum * Values
给声明的属性的新值
char * Nulls
若存在,哪个字段是 NULL.
输出
HeapTuple
修改后的新记录
non-NULL 如果 tuple 为非空(not NULL)并且修改成功
NULL 只有当 tuple 为 NULL(空)
SPI_result
SPI_ERROR_ARGUMENT 如果 rel 是 NULL 或 tuple 是 NULL 或 natts &le(小于)0 或 attnum 是 NULL 或 Values 是 NULL.
SPI_ERROR_NOATTRIBUTE 如果在 attnum 里有一个非法的数字 (attnum &le(小于)0 或 > 记录中字段数)
描述
SPI_modifytuple 修改一个上层执行器环境的记录.参考存储器管理章节.
用法
如果成功,返回一个指向新记录的指针.新记录在执行器上层环境分配(参见 存储器管理).传入的记录没有改变.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_fnumber
名称
SPI_fnumber — 查找声明的字段的字段号
语法
SPI_fnumber(tupdesc, fname)
输入
TupleDesc tupdesc
输入记录的描述
char * fname
字段名
输出
int
字段号
有效的以1为基的字段索引号
SPI_ERROR_NOATTRIBUTE 如果命名的字段没有找到
描述
SPI_fnumber 返回 fname 指明的字段的字段号.
用法
字段号是以1为基的.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_fname
名称
SPI_fname — 找出指明的字段的字段名
语法
SPI_fname(tupdesc, fname)
输入
TupleDesc tupdesc
输入的记录描述
char * fnumber
字段号
输出
char *
字段名
NULL -- 如果 fnumber 超出范围
出错时,SPI_result 设置为 SPI_ERROR_NOATTRIBUTE
描述
SPI_fname 返回指明的字段的字段名.
用法
字段号是以 1 为基的.
算法
返回一个新分配的字段名的拷贝.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_getvalue
名称
SPI_getvalue — 返回指明的字段的字符串值
语法
SPI_getvalue(tuple, tupdesc, fnumber)
输入
HeapTuple tuple
输入的待检查的字段
TupleDesc tupdesc
输入字段描述
int fnumber
字段号
输出
char *
字段值或 NULL(空),如果
字段为 NULL(空)
fnumber 超出范围(这时 SPI_result 设置为 SPI_ERROR_NOATTRIBUTE)
没有可用的输出函数(这时 SPI_result 设置为 SPI_ERROR_NOOUTFUNC)
描述
SPI_getvalue 返回指明字段的一个外部(字符串)形式的值.
用法
字段号是以 1 为基的.
算法
根据数值的要求分配存储器.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_getbinval
名称
SPI_getbinval — 返回指明的字段的二进制数值
语法
SPI_getbinval(tuple, tupdesc, fnumber, isnull)
输入
HeapTuple tuple
要检查的输入记录
TupleDesc tupdesc
输入记录描述
int fnumber
字段号
输出
Datum
字段二进制数值
bool * isnull
字段是否为空的标志
SPI_result
SPI_ERROR_NOATTRIBUTE
描述
SPI_getbinval 返回指明字段的二进制数值
用法
字段号是以1为基的.
算法
不为二进制数值分配新空间.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_gettype
名称
SPI_gettype — 返回指明字段的类型名
语法
SPI_gettype(tupdesc, fnumber)
输入
TupleDesc tupdesc
输入字段描述
int fnumber
字段号
输出
char *
指明字段号的类型名称
SPI_result
SPI_ERROR_NOATTRIBUTE
描述
SPI_gettype 返回一个指明字段的类型名的拷贝.
用法
字段号是以1为基的.
算法
不为二进制数值分配新空间.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SPI_gettypeid
名称
SPI_gettypeid — 返回指明字段的类型 OID
语法
SPI_gettypeid(tupdesc, fnumber)
输入
TupleDesc tupdesc
输入字段的描述
int fnumber
字段号
输出
OID
指明字段号的类型 OID.
SPI_result
SPI_ERROR_NOATTRIBUTE
描述
SPI_gettypeid 返回指明的字段的类型 OID.
用法
字段号是以 1 为基的.
算法
TBD
--------------------------------------------------------------------------------
-------------------------------------------------------------

