ocibindbyname - как передать несколько значений в in()?

svirol

Новичок
ocibindbyname - как передать несколько значений в in()?

Есть запрос типа
SELECT * FROM cols WHERE id in();
И вот количество значений в in неизвестно заранее - от 1 до бесконечности...
Как это сделать?

В лоб не получается
$sel="SELECT * FROM cols WHERE id in:)var)";
$stmt=OCIParse($conn, $sel);
$var="2125, 2126";
ocibindbyname($stmt, ':var', &$var, -1);
OciExecute($stmt);
выдает
OCIStmtExecute: ORA-01722: неверное число

:(
 

tony2001

TeaM PHPClub
>И вот количество значений в in неизвестно заранее - от 1 до бесконечности...
это как?
 

svirol

Новичок
Ну, не до бесконечности, конечно :) И известно в процессевыполнения скрипта, но может быть разным в разное время... У меня только одно решение было - заменять :)var) на :)var1, :var2) - циклом по количеству значений, потом парсить и ocibindbyname - опять же в цикле... Вобщем, не сложно, но очень хочется обойтись одним ocibindbyname. Нельзя - так нельзя, буду делать в цикле...
 

Serguitar

Новичок->продвинутый
svirol
да ты запрос строкой собери и потом выполняй. Зачем ещё потом и передавать переменные?
 

svirol

Новичок
Ну, чтобы в oracle одинаковые запросы кешировались и быстрее работали...
 
Сверху