SPI_exec(query, tcount)
SPI_OK_EXEC 如果正确断开�返回此值 |
SPI_ERROR_UNCONNECTED 如果从一个未联接的过程调用�返回此值 |
SPI_ERROR_ARGUMENT 如果查询是 NULL 或者 tcount < 0 �返回此值 |
SPI_ERROR_UNCONNECTED 如果过程未联接�返回此值� |
SPI_ERROR_COPY 如果 COPY TO/FROM stdin�标准输入��返回此值� |
SPI_ERROR_CURSOR 如果 DECLARE/CLOSE CURSOR�FETCH�返回此值 |
SPI_ERROR_TRANSACTION 如果 BEGIN/ABORT/END� 返回此值� |
SPI_ERROR_OPUNKNOWN 如果查询类型未知�这种情况不应发生�� |
如果你的查询执行成功�那么将返回下列非负数值之一�
SPI_OK_UTILITY 如果执行了某些应用�例如 CREATE TABLE ...� |
SPI_OK_SELECT 如果执行了 SELECT �但不是 SELECT ... INTO�� |
SPI_OK_SELINTO 如果执行了 SELECT ... INTO |
SPI_OK_INSERT 如果执行了 INSERT�或 INSERT ... SELECT� |
SPI_OK_DELETE 如果执行了 DELETE |
SPI_OK_UPDATE 如果执行了 UPDATE |
这个�函数�只能从一个已联接的过程中调用� 如果 tcount 是零则对查询扫描返回的所有记录都执行查询� 使用 tcount > 0 你可以�制查询执行的记录数�例如�
SPI_exec ("insert into table select * from table", 5);将允许最多 5 条记录插入表中�如果你的查询执行成功则返回一个非负数�
注意: 你可能在一个字符串里传递许多查询或一个查询字符串可能被 RULE �规则�重写� SPI_exec 返回最后一个执行的查询的结果�
最后一个被执行的查询的实际记录数放在全局变量 SPI_processed 里返回 �如果不是 SPI_OK_UTILITY�� 如果返回了 SPI_OK_SELECT 而且 SPI_processed > 0 那么你可以通过全局指针 SPITupleTable *SPI_tuptable 来访问这些选出的记录� 同样要注意� SPI_finish 将释放所有 SPITupleTable 并令所有 SPITupleTable 不可用� �参阅存储器管理��
SPI_exec 可能返回下面的�本地�值�
SPI_ERROR_ARGUMENT 如果查询是 NULL �空�或 tcount < 0 �返回此值� |
SPI_ERROR_UNCONNECTED 如果过程没有联接�返回此值� |
SPI_ERROR_COPY 如果是 COPY TO/FROM stdin�标准输入��返回此值� |
SPI_ERROR_CURSOR 如果是 DECLARE/CLOSE CURSOR�FETCH�返回此值� |
SPI_ERROR_TRANSACTION 如果 BEGIN/ABORT/END�返回此值� |
SPI_ERROR_OPUNKNOWN 如果查询类型未知�不应发生这种情况��返回此值� |