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.