小巧、快速、可靠。(輕巧、快速、可靠。)
選擇其中三項。(擇三。)

SQLite C 介面 (SQLite C 介面)

取得聚合函數上下文 (取得彙總函式上下文)

void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);

聚合 SQL 函數的實作使用此例程來配置記憶體以儲存其狀態。(彙總 SQL 函式的實作使用此常式來配置記憶體以儲存其狀態。)

對於特定的聚合函數,第一次呼叫 sqlite3_aggregate_context(C,N) 例程時,SQLite 會配置 N 個位元組的記憶體,將該記憶體歸零,並返回指向新記憶體的指標。在對同一個聚合函數執行個體進行第二次及後續呼叫 sqlite3_aggregate_context() 時,會返回相同的緩衝區。Sqlite3_aggregate_context() 通常會針對每次呼叫 xStep 回呼函數時呼叫一次,然後在呼叫 xFinal 回呼函數時最後一次呼叫。當沒有任何資料列符合聚合查詢時,則不會呼叫聚合函數實作的 xStep() 回呼函數,並且只會呼叫 xFinal() 一次。在這些情況下,sqlite3_aggregate_context() 可能會從 xFinal() 內部第一次被呼叫。(對於特定的彙總函式,第一次呼叫 sqlite3_aggregate_context(C,N) 常式時,SQLite 會配置 N 個位元組的記憶體,將該記憶體歸零,並傳回指向新記憶體的指標。在對同一個彙總函式實體進行第二次及後續呼叫 sqlite3_aggregate_context() 時,會傳回相同的緩衝區。Sqlite3_aggregate_context() 通常會針對每次呼叫 xStep 回呼函式時呼叫一次,然後在呼叫 xFinal 回呼函式時最後一次呼叫。當沒有任何資料列符合彙總查詢時,則不會呼叫彙總函式實作的 xStep() 回呼函式,並且只會呼叫 xFinal() 一次。在這些情況下,sqlite3_aggregate_context() 可能會從 xFinal() 內部第一次被呼叫。)

如果 N 小於或等於零,或者發生記憶體配置錯誤,sqlite3_aggregate_context(C,N) 例程在第一次呼叫時會返回 NULL 指標。(如果 N 小於或等於零,或者發生記憶體配置錯誤,sqlite3_aggregate_context(C,N) 常式在第一次呼叫時會傳回 NULL 指標。)

由 sqlite3_aggregate_context(C,N) 配置的空間大小由第一次成功呼叫時的 N 參數決定。在同一個聚合函數執行個體中,對 sqlite3_aggregate_context() 的任何後續呼叫中更改 N 的值都不會調整記憶體配置的大小。在 xFinal 回呼函數中,通常會在呼叫 sqlite3_aggregate_context(C,N) 時設定 N=0,以避免發生無意義的記憶體配置。(由 sqlite3_aggregate_context(C,N) 配置的空間大小由第一次成功呼叫時的 N 參數決定。在同一個彙總函式實體中,對 sqlite3_aggregate_context() 的任何後續呼叫中更改 N 的值都不會調整記憶體配置的大小。在 xFinal 回呼函式中,習慣上會在呼叫 sqlite3_aggregate_context(C,N) 時設定 N=0,以避免發生無意義的記憶體配置。)

當聚合查詢結束時,SQLite 會自動釋放 sqlite3_aggregate_context() 配置的記憶體。(當彙總查詢結束時,SQLite 會自動釋放 sqlite3_aggregate_context() 配置的記憶體。)

第一個參數必須是 SQL 函數上下文 的副本,它是實作聚合函數的 xStep 或 xFinal 回呼例程的第一個參數。(第一個參數必須是 SQL 函式上下文 的副本,它是實作彙總函式的 xStep 或 xFinal 回呼常式的第一個參數。)

此例程必須從執行聚合 SQL 函數的相同執行緒中呼叫。(此常式必須從執行彙總 SQL 函式的相同執行緒中呼叫。)

另請參閱物件常數函數的列表。(另請參閱物件常數函式的列表。)