SPI_execute_plan

Name

SPI_execute_plan -- 執行一個 SPI_prepare 準備的查詢規劃

Synopsis

int SPI_execute_plan(void * plan, Datum * values, const char * nulls,
                     bool read_only, int count)

描述

SPI_execute_plan 執行一個 SPI_prepare 準備的規劃。 read_onlycount 的含義和 SPI_execute 裡面的相同。

參數

void * plan

執行規劃(SPI_prepare 返回的東西)

Datum *values

一個實際的參數值的數組。比如和規劃的參數個數長度相同。

const char * nulls

一個描述哪個參數是空的數組。必須和規劃的參數個數相同。 n 資料表示一個空值(在 values 裡面對應的條目將被忽略); 一個空格資料表示一個非空值(在 values 裡對應條目是有效的)。

如果 nullsNULL,那麼 SPI_execute_plan 就認為沒有參數是空。

bool read_only

只讀執行時為 true

int count

執行或返回的最大行數

返回值

返回值和 SPI_execute 的一樣,另外還有下面幾個可能的(負值)結果:

SPI_ERROR_ARGUMENT

如果 planNULL 或者 count 小於 0

SPI_ERROR_PARAM

如果 valuesNULLplan 準備了一些參數

成功時, SPI_processedSPI_tuptable 的設置和 SPI_execute 裡一樣。

注意

如果準備好了的規劃引用的一個對像(資料表,函數,等等。)在會話過程中被刪除, 那麼 SPI_execute_plan 對此規劃的執行結果將不可預料。