|
Распарсить строку в коллекцию. Или?
|
|||
---|---|---|---|
#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/moderation_log.php?user_name=%D1%84%D0%B0%D0%B9%D1%80%D0%B1%D0%B5%D1%80%D0%B4%D0%B4]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 2279ms |
total: | 2438ms |
0 / 0 |