在线文档教程
Sqlite
C界面 | C Interface

The Carray() Table-Valued Function

The Carray() Table-Valued Function

1.概述

Carray($PTR,$N)是一个带有单列(名为“value”)和零个或多个行的表值函数。carray()中每行的“值”取自一个C语言数组,其长度为$ N个元素。$ PTR是一个指向数组开始的指针。通过这种方式,carray()函数提供了一种便捷的机制来将C语言数组绑定到SQL查询。

2. Availability

carray()函数默认情况下不会编译到SQLite中。它可用作ext / misc / carray.c源文件中的可加载扩展。

3.细节

carray()函数需要两个或三个参数。第一个参数是一个指向数组的指针。由于无法直接在SQL中指定指针值,因此第一个参数必须是使用指针类型为“carray”的sqlite3_bind_pointer()接口绑定到指针值的参数。第二个参数是数组中元素的数量。可选的第三个参数是确定C语言数组中元素的数据类型的字符串。第三个参数的允许值是:

  • 'int32'

  • 'int64'

  • 'double'

  • 'char*'

默认数据类型是'int32'。

carray()函数可以用在查询的FROM子句中。例如,要使用从地址为$ PTR的C语言数组中取出的rowid查询OBJ表中的两个条目。

SELECT obj.* FROM obj, carray($PTR, 10) AS x WHERE obj.rowid=x.value;

该查询给出了相同的结果:

SELECT * FROM obj WHERE rowid IN carray($PTR, 10

SQLite is in the Public Domain.