将集合绑定为“col in in?”的右侧?条款

时间:2009-05-08 19:52:37

标签: sqlite

在Oracle OCI中,我可以准备一个如下声明:

select * from t where pk in :1

并绑定一个VArray集合:1占位符。

除非我使用以下其中一种方法,否则我认为没有办法在SQLite中执行等效操作:

  • 制备

    从t中选择*,其中pk =:1

    而是用我的集合中的所有pks执行N次,并手动对N个查询中的行进行“联合”

  • 将我的pk集合放在一个临时表中,然后用它来连接。

  • 以文本方式替换:1表示收集值,否定预处理语句的好处。

我错过了什么吗?什么是模拟OCI集合绑定的推荐方法?谢谢,--DD

1 个答案:

答案 0 :(得分:3)

唉,sqlite只支持绑定到标量,所以你不能将参数绑定到集合。如果收集器中的项目数量有限,您可以准备一个带有“IN (?, ?, ?, ?)' [[假设最多四个项目]]的语句,然后绑定数组中的实际标量(如果小于4,则绑定最后一个一个重复,或绑定一个你知道“不可能”作为占位符的值);否则,你绘制的方法确实或多或少都会浮现在脑海中。