|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Всем доброго дня! Знаю, что это не раз обсуждалось, но решения я не нашел, в интернете полно примеров простого одномерного массива. В Оракле в процедуре следующее Код: plsql 1. 2. 3. 4.
где TCur_Arr это Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В C# имеется массив вида Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Я пишу так Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Ошибка на "p.Value = curArr;" - Значение не попадает в ожидаемый диапазон. Пробовал по-разному, что находил в интернете, но ничего не получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 06:17 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
aidynchik, Передавайте в виде строки с элементами через разделитель. А внутри сразу в табличку для join. Мало ли какие типы в базе есть.imho. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 07:33 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Petro123, да, я думал над этим, но хочется как-то покрасивше ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 07:36 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
aidynchikпокрасивше Очень сложное понятие в архитектуре. Неоднозначное. Например, технически красиво это когда бд не зависит от клиента. В веб к клиенту передается json а не HTML. Так и в шарпе красивее передавать через простые типы. Особенно когда у вас передается массив размеров обуви)))) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 07:48 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Petro123Так и в шарпе красивее передавать через простые типы. К таким заявлениям следовало бы добавлять "по моему мнению" - а то еще кто-нибудь воспримет их всерьез. aidynchik, есть подозрение, что передача массивов работает только для примитивных типов - см. здесь: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1857352500346934865 Код: c# 1. 2.
Выход - сериализуйте массив в XML, передавайте как XMLType (ну, или CLOB - не помню, поддерживает ли ODP xml-тип), и внутри процедуры разбирайте через XMLTable. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:22 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, ок, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:24 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, В архитектуре всегда неоднозначно и компромиссы) Сначала xml, потом bulk insert, потом...табличный тип, потом... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:48 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Кстати вы Point передаете как x, y или Point? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:50 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Petro123Сон Веры Павловны, Кстати вы Point передаете как x, y или Point? Point - скалярный тип, а не массив, как у ТС. В случае массива и при наличии возможности - разумеется, как массив Point. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 09:59 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Возможности понаставить библиотек для поддержки геометрии всегда полно. А вот понять границу лишних преобразований (оверхед) сложнее. Какого фига я должен в оракле разбирать xml, если строка 22;44;66 таи парсится одним оператором? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 10:34 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Код: c# 1.
... NUMBER_LIST_TYPE_GET_LIST_ELEMENTS IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 10:44 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Petro123Какого фига я должен в оракле разбирать xml, если строка 22;44;66 таи парсится одним оператором? Не хочется - ради б-га, не разбирайте, и стройте свои костыли. У автора случай несколько сложнее, чем три числа в строчку, его структура в т.ч. содержит строковые поля - что будете делать, если в одно из них попадет разделитель? Ну и парсинг XML ничего сверх из себя не представляет, все тот же один оператор XMLTable, на выходе дающий нормальную типизированную выборку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 11:21 |
|
Передача массива в хранимую процедуру Oracle
|
|||
---|---|---|---|
#18+
Сон Веры Павловныодин оператор XMLTable, Раньше загружался целый COM об. Парсер операционки. Счас не знаю. Конечно, нужно смотреть в самой бд и ветке по бд. Согласен. Я type is record в базе делал в исключительных случаях. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2018, 11:40 |
|
|
start [/forum/topic.php?fid=20&fpage=34&tid=1399501]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 310ms |
total: | 462ms |
0 / 0 |