Sqlite 将集合绑定为“a”的右侧;“col在哪里?”;条款
在Oracle OCI中,我可以编写如下语句:Sqlite 将集合绑定为“a”的右侧;“col在哪里?”;条款,sqlite,Sqlite,在Oracle OCI中,我可以编写如下语句: select * from t where pk in :1 并为:1占位符绑定VArray集合 我看不到任何方法可以在SQLite中实现等效功能,除非我使用以下工作之一: 预备 从t中选择*其中pk=:1 取而代之的是,使用集合中的所有PK执行N次,并手动对N个查询中的行进行“并集” 将我的pk集合放在一个临时表中,并使用t进行连接 以文本形式将:1替换为集合值,否定已准备语句的好处 我错过什么了吗?建议采用什么方法来模拟OCI的集合绑定?
select * from t where pk in :1
并为:1占位符绑定VArray集合
我看不到任何方法可以在SQLite中实现等效功能,除非我使用以下工作之一:
- 预备 从t中选择*其中pk=:1 取而代之的是,使用集合中的所有PK执行N次,并手动对N个查询中的行进行“并集”
- 将我的pk集合放在一个临时表中,并使用t进行连接
- 以文本形式将:1替换为集合值,否定已准备语句的好处
我错过什么了吗?建议采用什么方法来模拟OCI的集合绑定?谢谢,--DD唉,
sqlite
只支持绑定到标量,所以您不能将参数绑定到集合是对的。如果收集器中的项数是有界的,则可以准备一个语句,其中“in(?,,?,?)”
[[假设最多四项]],然后绑定数组中的实际标量(如果少于4,则重复绑定最后一个,或者绑定一个您知道“不可能”的值作为占位符);否则,你所描绘的方法或多或少都是我想到的。谢谢,我没想到这一个。对于基数较低的集合,它可能是最简单、最快的。我可以有一个准备好的语句,其中最多有N个占位符,另一个语句执行连接,例如,当有更多元素时。干杯,——嗯,事实证明在甲骨文中这并不像我想象的那么容易,但仍然是可能的。有关要使用的正确Oracle语法,请参阅。