Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите избавится от Invalid number  [new]
LimonFX
Member

Откуда:
Сообщений: 77
Допустим есть такой вот запрос
Select * from users where id in (:UsersID)

Из дельфи этот параметр я могу передать как String вот так
Query.ParamByName('UsersID').AsString := '1,2,3,4'

В итоге оракл выполняет такой вот запрос
Select * from users where id in ('1,2,3,4') 
и выдает ошибку инвалид намбер.

Есть ли какой-нибудь способ передать параметр таким способом что бы значение было без кавычек
т.е вот так
Select * from users where id in (1,2,3,4) 
4 мар 08, 15:25    [5368466]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
suric-jan
Member

Откуда: Омск
Сообщений: 88
можно выполнять запрос вида
 select * from table t where id in (и вот здесь превращать вашу строку в набор)
в зависимости от версии это можно сделать с substr (для < 10) или regexp_subst (по компактнее будет )
4 мар 08, 15:32    [5368523]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Не переписывая запрос?
4 мар 08, 15:32    [5368524]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
nikopol
Member

Откуда:
Сообщений: 335
INSTR (',' || :UsersID || ',', ',' || id || ',')

Я брошу все и войду в твое положение
4 мар 08, 15:32    [5368529]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Сие баян есмь :)
4 мар 08, 15:36    [5368563]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Дубовая голова
Сие баян есмь :)

+ в основном - на тему: как направить перформенс лесом..
4 мар 08, 15:38    [5368572]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
LimonFX
Member

Откуда:
Сообщений: 77
Нифигасе, а про INSTR я даже и не подумал. Но исходные данные поменялись и необходимость в IN отпала. Спасибо за помощь.
4 мар 08, 15:56    [5368731]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
=Tims=
Member [заблокирован]

Откуда:
Сообщений: 91
обычно по ID делают первичный ключ.
Совет с instr хороший конечно, но для таблиц, где миллионы строк, я бы так не делал :)
4 мар 08, 16:06    [5368824]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавится от Invalid number  [new]
M_IV
Member

Откуда:
Сообщений: 1303
написали же: тема - баян.

жевалось N+1 раз.

select * frm tab where id in 
(
SELECT     SUBSTR (str,
                   INSTR (',' || str, ',', 1, LEVEL),
                     INSTR (str || ',', ',', 1, LEVEL)
                   - INSTR (',' || str, ',', 1, LEVEL)
                  ) result
      FROM (SELECT '101,102,103,104,105,106,107,108,109,110' str FROM DUAL)
CONNECT BY LEVEL <= LENGTH (TRANSLATE (str, '~0123456789', '~')) + 1
)
4 мар 08, 16:12    [5368898]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить