|
Распарсить строку в коллекцию. Или?
|
|||
---|---|---|---|
#18+
Здравствуйте. С sql только начинаю дружить. Помогите советом или направьте в нужную сторону, пожалуйста. Есть таблица с числовым полем. Есть процедура, которая селектом должна выбирать данные из таблицы по этому полю. В процедуру на вход сделал varchar строку, где приходят параметры для выборки по числовому полю. Если прислыаю одно значение в виде "1", то выборка проходит нормально. Если "1, 2", то IN не работает. Как написать запрос, если в процедуру приходит строка с нужными значениями поля? То есть в процедуру приходит строка "1, 2, 3". Нужно из таблицы выбрать все записи со значением поля 1, 2 или 3. Изначально написал с использованием IN, но потом дошло что строку оператор не поймет и надо парсить. Нужно ли делать через коллекцию или есть более правильный/простой способ? Или может в процедуру нужно не строку передавать, а есть умнее способ? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 14:14 |
|
Распарсить строку в коллекцию. Или?
|
|||
---|---|---|---|
#18+
Типовое решение в данном случае использовать динамический sql дока , статья с примерами Но если хочешь парсер, то можно и парсер. Код: plsql 1. 2. 3. 4. 5.
пример для развития - погугли, что в нём что обозначает и как работает. ну и другие способы есть, в том числе менять то, что на вход передаёшь. всё зависит от твоей инфраструктуры (какое клиентское приложение и др.) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 14:36 |
|
Распарсить строку в коллекцию. Или?
|
|||
---|---|---|---|
#18+
плюсик забыл (но если у тебя только цифры, т.е. однозначные числа - и первый вариант отработает) вот так: Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 14:39 |
|
Распарсить строку в коллекцию. Или?
|
|||
---|---|---|---|
#18+
FogelТиповое решение в данном случае использовать динамический sql И то и другое открыто для SQL injections посему как минимум придется пропускать через DBMS_ASSERT. Наибoлее безопасный вариант передавать коллекцию или varray или более продвинутый парсер пропускающий только допустимые числа (целые/дробные/знак...). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2019, 15:09 |
|
|
start [/forum/topic.php?fid=52&fpage=76&tid=1882468]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 281ms |
total: | 471ms |
0 / 0 |