Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Длинная строка [D7]


Страницы:   1 2

rar ©   (2008-11-14 08:09:00) 

Такая проблема надо в хранимую процедуру отправить длинную строку 150 000 символов.
В хранимке для входного параметра выбрал тип CLOB, на компоненте ADOStoreProc выбирается по умолчанию DataType =ftInterface, ну и когда подсовываю ему стороку он ругается "Приложение использует для текущей операции значение  неверного типа".

Пробовал ставить тип ftMemo, тип такой устанавливается но тоже ругается, "Ora-01460 затребовано нереализованное или неразумное преобразование"
тип ftOraClob не устанавливается выдается сообщение "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона ...."

Может кто решил эту проблему, буду очень признателен за помощь.
Вариант с разрезанием строки не предлагать, он и так очевиден


rar   (2008-11-17 12:43:00) [1]

Всем спасибо за опсуждение :-)


sniknik   (2008-11-17 12:30:00) [2]

> Это как ?
это тайна великая есть... ибо Это показывать стыдно. ;о))))


sniknik   (2008-11-17 12:27:00) [3]

> В Oracle все основные таблицы, и они по 100 000 записей и тащить их куда либо не имеет смысла.
каким боком они участвуют в "обработке"? данные из них сравниваются/вычисляются в паре с полученными из аксесса? тогда нужны объединения, индексы, т.е. данные с обоих сторон должны быть в структурированной (табличной) форме. а ты из них делаешь строку, после очень быстро передаешь, и начинаешь парсить и делать опять таблицу (?), для того чтобы можно было обрабатывать в паре с основными...
ты уж как то определись, либо они не участвуют, и тогда постановка задачи идиотская, либо участвуют и тогда время нужно считать в общем, а не только среднюю часть от всего т.е. загрузку.
какой смысл в передаче пусть даже за 0,000001 сек, если данные от такой передачи придётся обрабатывать час?

> Лучше оторвать, больнее будет.
договорились.


Anatoly Podgoretsky   (2008-11-17 12:14:00) [4]

> sniknik  (17.11.2008 11:25:25)  [25]

Лучше оторвать, больнее будет.


Сергей М.   (2008-11-17 11:54:00) [5]


> Там в хранимке вся обработка и происходит. Вся загвозда
> во времени выполнения


Ну и какой тогда резон тащить данные на обработку в Оракл, если известно, что ХП сделает это заведомо медленней чем апп-сервер ?


> приходится обработку делать перебором


Это как ?


MsGuns   (2008-11-17 11:41:00) [6]

>GRAND ©   (14.11.08 17:02) [20]
>Истинно так!

Паранойя ?


rar   (2008-11-17 11:39:00) [7]

В Oracle все основные таблицы, и они по 100 000 записей и тащить их куда либо не имеет смысла. Там в хранимке вся обработка и происходит. Вся загвозда во времени выполнения в этом я ограничен


sniknik   (2008-11-17 11:25:00) [8]

> Стоит задача  обработки данных в ORACLE но исходные данные находятся в ACCESS.
что за идиотские ограничения, почему именно в оракле? задача это обработка данных, а уж где это будет происходить, методы и средства выбирает программист.
постановщику "задачи"  голову отвернуть...

> Сейчас передаю данные строками по 32767 байт, загрузка таблицы происходит менее 4 секунд.
а время на разворачивание этой строки в табличную форму для обработки учитываешь? и время на предварительное "сворачивание"?
почему учитывается только передача, а не весь цикл с обработкой? вся обработка состоит только в том чтобы впихнуть эти данные в оракл, неважно в какой форме, а последующая работа с этими данными планируется? судя по всему нет. а раз так то просто ничего не делать, в передаче вызвать пустую процедуру... время будет 0 секунд.


Кщд   (2008-11-17 08:50:00) [9]

>Может у кого есть еще решения. как забросить таблицу в ORACLE. Буду благодарен.
использовать sqlloader
либо механизм внешних таблиц, на нем основанный


rar   (2008-11-17 08:18:00) [10]

Извиняюсь за опечатку, провайдера поменял на Oracle Provider for OLE DB.
Ну и полезли всякие тараканы, в общем проблема не решилась.
По поводу длинной строки, откуда она взялась.
Стоит задача  обработки данных в ORACLE но исходные данные находятся в ACCESS. Программа трехзвенка, обработка на среднем звене.
ДА ODBC на БД отсутствует, и пока еще дрова не скоро купят.
Пробовал обработку провести на среднем звене, но приходится обработку делать перебором, занимает много времени около 3 минут. Пробовал забросить данные в ORACLE используя пакетную передачуу, но пакет передается около 1 минуты, что тоже очень долго. Сейчас передаю данные строками по 32767 байт, загрузка таблицы происходит менее 4 секунд.
Но строк передаю 5 штук. Вот и хотелось передать одной строкой.
Может у кого есть еще решения. как забросить таблицу в ORACLE. Буду благодарен.


Petr V. Abramov   (2008-11-14 23:38:00) [11]


> на компоненте ADOStoreProc выбирается по умолчанию


> тип ftOraClob не устанавливается выдается сообщение "Аргументы
> имеют неверный тип, выходят за пределы допустимого диапазона
> ...."

выкинь ADO, поставь DOA или ODAC.
ADO мы не лечим


Anatoly Podgoretsky   (2008-11-14 19:22:00) [12]

> GRAND  (14.11.2008 17:02:20)  [20]

Это плохая карма!


GRAND   (2008-11-14 17:02:00) [13]

Истинно так!


Anatoly Podgoretsky   (2008-11-14 16:56:00) [14]

Это карма.


GRAND   (2008-11-14 16:52:00) [15]


> Сменил как рекомендовано провайдера MS OLE DB Provider for
> Oracle на MS OLE DB Provider for Oracle так перестал идти
> простой запрос


:))) А оно всегда так - как только сменишь какой-нибудь программистский инструмент на что-нибудь, где в названии присутствует "MS", так что-то простое обязательно перестанет идти :)))


Сергей М.   (2008-11-14 16:49:00) [16]


> MS OLE DB Provider for Oracle на MS OLE DB Provider for
> Oracle


Это очепятка ? Или шило на шило поменял ?


> мне ее надо паропарсить и обработать результат


В чем заключается сам парсинг и обработка его результата ?
Почему нельзя выполнить разбор строки на клиенте или на апп-сервере ?

И, стесняюсь спросить, откуда берется строка такого монстрообразного размера ?


Поросенок Винни-Пух   (2008-11-14 16:34:00) [17]

слева первый, справа второй


Anatoly Podgoretsky   (2008-11-14 16:20:00) [18]


> MS OLE DB Provider for Oracle на MS OLE DB Provider for Oracle

В чем разница?


Поросенок Винни-Пух   (2008-11-14 16:15:00) [19]

мне ее надо паропарсить и обработать результат.

для этого не требуется оракл


Поросенок Винни-Пух   (2008-11-14 16:02:00) [20]

мне не надо эту строку вставлять в таблицу

вставить строку в таблицу - способ передать строку на сервер библиотеками, не поддерживающими clob.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо