On this page
章 46.服务器编程接口
目录
-
-
- SPI_connect —将过程连接到 SPIManagement 器
SPI_finish —从 SPIManagement 器断开程序
SPI_execute —执行命令
SPI_exec —执行读/写命令
SPI_execute_with_args —使用离线参数执行命令
SPI_prepare —准备一条语句,但尚未执行
SPI_prepare_cursor —准备一条语句,但尚未执行
SPI_prepare_params —准备一条语句,但尚未执行
SPI_getargcount —返回
SPI_prepare
准备的语句所需的参数数量SPI_getargtypeid —返回由
SPI_prepare
准备的语句的参数的数据类型 OIDSPI_is_cursor_plan —如果
SPI_prepare
可以与SPI_cursor_open
一起使用,则返回true
SPI_execute_plan —执行
SPI_prepare
准备的语句SPI_execute_plan_with_paramlist —执行
SPI_prepare
准备的语句SPI_execp —以读/写模式执行语句
SPI_cursor_open —使用由
SPI_prepare
创建的语句设置游标SPI_cursor_open_with_args —使用查询和参数设置游标
SPI_cursor_open_with_paramlist —使用参数设置游标
SPI_cursor_find-按名称查找现有游标
SPI_cursor_fetch —从游标中获取一些行
SPI_cursor_move —移动光标
SPI_scroll_cursor_fetch —从游标中获取一些行
SPI_scroll_cursor_move —移动光标
SPI_cursor_close —关闭光标
SPI_keepplan —保存准备好的语句
SPI_saveplan —保存准备好的语句
SPI_register_relation —在 SPI 查询中按名称提供临时命名关系
SPI_unregister_relation —从注册表中删除一个短暂的命名关系
SPI_register_trigger_data —在 SPI 查询中提供临时触发数据
-
-
-
- SPI_fname —确定指定列号的列名
SPI_fnumber —确定指定列名的列号
SPI_getvalue —返回指定列的字符串值
SPI_getbinval —返回指定列的二进制值
SPI_gettype —返回指定列的数据类型名称
SPI_gettypeid —返回指定列的数据类型 OID
SPI_getrelname —返回指定关系的名称
SPI_getnspname —返回指定关系的名称空间
-
-
-
- SPI_palloc —在上级执行程序上下文中分配内存
SPI_repalloc —在上层执行程序上下文中重新分配内存
SPI_pfree —上级执行程序上下文中的可用内存
SPI_copytuple —在上级执行者上下文中复制一行
SPI_returntuple —准备返回 Tuples 作为基准
SPI_modifytuple-通过替换给定行的选定字段来创建行
SPI_freetuple —释放在上级执行者上下文中分配的行
SPI_freetuptable-释放由
SPI_execute
或类似功能创建的行集SPI_freeplan —释放以前保存的准备好的语句
-
服务器编程接口(SPI)使用户定义的 C 函数的编写者能够在其函数内运行 SQL 命令。 SPI 是一组接口函数,用于简化对解析器,计划器和 Actuator 的访问。 SPI 还执行一些内存 Management。
Note
可用的过程语言提供了各种从过程执行 SQL 命令的方法。这些工具大多数都是基于 SPI 的,因此本文档也可能适用于这些语言的用户。
为避免误解,当我们谈到 SPI 接口功能时,我们将使用术语“功能”,而对于使用 SPI 的用户定义的 C 函数,将使用“过程”。
请注意,如果通过 SPI 调用的命令失败,则控制不会返回到您的过程。而是将回滚执行过程的事务或子事务。 (考虑到 SPI 函数大多已记录了错误返回约定,这似乎令人惊讶.但是,这些约定仅适用于 SPI 函数本身中检测到的错误.)可以通过在 SPI 周围构建自己的子事务来恢复错误后的控制。可能失败的呼叫。
SPI 函数成功返回非负结果(通过返回的整数值或在全局变量SPI_result
中,如下所述)。错误时,将返回否定结果或NULL
。
使用 SPI 的源代码文件必须包含头文件executor/spi.h
。