-
Такая проблема надо в хранимую процедуру отправить длинную строку 150 000 символов.
В хранимке для входного параметра выбрал тип CLOB, на компоненте ADOStoreProc выбирается по умолчанию DataType =ftInterface, ну и когда подсовываю ему стороку он ругается "Приложение использует для текущей операции значение неверного типа".
Пробовал ставить тип ftMemo, тип такой устанавливается но тоже ругается, "Ora-01460 затребовано нереализованное или неразумное преобразование"
тип ftOraClob не устанавливается выдается сообщение "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона ...."
Может кто решил эту проблему, буду очень признателен за помощь.
Вариант с разрезанием строки не предлагать, он и так очевиден
-
-
> см. самый последний пост - видимо, это имеет прямое отношение
> и к твоей беде
не получается пока
-
>Вариант с разрезанием строки не предлагать, он и так очевиден
если проект ориентирован на работу исключительно с Oracle, то очевиден вариант со сменой компонент доступа
-
> не получается пока
что у тебя "пока не получается"? ты вообще ссылку то открывал, читал, что там в последнем посте написано? каким образом твой "ответ" отвечает на тот пост?
что вообще за идиотская манера вести обсуждение?
его спрашивают "ты идёшь в кино", а он отвечает "спасибо я уже пообедал".
и какая связь?
p.s. имхо. бессмысленная ветка. ничего у него не получится. очевидных слов не понимает, или понимает "по своему".
-
Может кто решил эту проблему, буду очень признателен за помощь.
ODAC и никаких вопросов и проблем
-
по ссылке сходил провайдера сменить не могу, возникают другие проблемы
-
компонентов ODAC тоже нет у нас только лицензионное ПО
-
> провайдера сменить не могу, возникают другие проблемы
Что за проблемы-то ? Коран запрещает или что ?
-
все спасибо
а нервным пейте КОРВАЛОЛ, и не наезжайте
-
> rar (14.11.2008 10:32:07) [7]
А кто воровать рекомендовал?
-
тогда зайди сбоку.
вставь строку в таблицу, верни id записи.
в процедуру передай id
-
мне не надо эту строку вставлять в таблицу, мне ее надо паропарсить и обработать результат.
Сменил как рекомендовано провайдера MS OLE DB Provider for Oracle на MS OLE DB Provider for Oracle так перестал идти простой запрос
SELECT COUNT(*) CR FROM TableName возвращает 0, хотя в таблице есть записи, ну и длинную строку все равно не съел к сожалению
-
мне не надо эту строку вставлять в таблицу
вставить строку в таблицу - способ передать строку на сервер библиотеками, не поддерживающими clob.
-
мне ее надо паропарсить и обработать результат.
для этого не требуется оракл
-
> MS OLE DB Provider for Oracle на MS OLE DB Provider for Oracle
В чем разница?
-
слева первый, справа второй
-
> MS OLE DB Provider for Oracle на MS OLE DB Provider for
> Oracle
Это очепятка ? Или шило на шило поменял ?
> мне ее надо паропарсить и обработать результат
В чем заключается сам парсинг и обработка его результата ?
Почему нельзя выполнить разбор строки на клиенте или на апп-сервере ?
И, стесняюсь спросить, откуда берется строка такого монстрообразного размера ?
-
> Сменил как рекомендовано провайдера MS OLE DB Provider for
> Oracle на MS OLE DB Provider for Oracle так перестал идти
> простой запрос
:))) А оно всегда так - как только сменишь какой-нибудь программистский инструмент на что-нибудь, где в названии присутствует "MS", так что-то простое обязательно перестанет идти :)))
-
Это карма.
-
Истинно так!
-
> GRAND (14.11.2008 17:02:20) [20]
Это плохая карма!
-
> на компоненте ADOStoreProc выбирается по умолчанию
> тип ftOraClob не устанавливается выдается сообщение "Аргументы
> имеют неверный тип, выходят за пределы допустимого диапазона
> ...."
выкинь ADO, поставь DOA или ODAC.
ADO мы не лечим
-
Извиняюсь за опечатку, провайдера поменял на Oracle Provider for OLE DB.
Ну и полезли всякие тараканы, в общем проблема не решилась.
По поводу длинной строки, откуда она взялась.
Стоит задача обработки данных в ORACLE но исходные данные находятся в ACCESS. Программа трехзвенка, обработка на среднем звене.
ДА ODBC на БД отсутствует, и пока еще дрова не скоро купят.
Пробовал обработку провести на среднем звене, но приходится обработку делать перебором, занимает много времени около 3 минут. Пробовал забросить данные в ORACLE используя пакетную передачуу, но пакет передается около 1 минуты, что тоже очень долго. Сейчас передаю данные строками по 32767 байт, загрузка таблицы происходит менее 4 секунд.
Но строк передаю 5 штук. Вот и хотелось передать одной строкой.
Может у кого есть еще решения. как забросить таблицу в ORACLE. Буду благодарен.
-
>Может у кого есть еще решения. как забросить таблицу в ORACLE. Буду благодарен.
использовать sqlloader
либо механизм внешних таблиц, на нем основанный
-
> Стоит задача обработки данных в ORACLE но исходные данные находятся в ACCESS.
что за идиотские ограничения, почему именно в оракле? задача это обработка данных, а уж где это будет происходить, методы и средства выбирает программист.
постановщику "задачи" голову отвернуть...
> Сейчас передаю данные строками по 32767 байт, загрузка таблицы происходит менее 4 секунд.
а время на разворачивание этой строки в табличную форму для обработки учитываешь? и время на предварительное "сворачивание"?
почему учитывается только передача, а не весь цикл с обработкой? вся обработка состоит только в том чтобы впихнуть эти данные в оракл, неважно в какой форме, а последующая работа с этими данными планируется? судя по всему нет. а раз так то просто ничего не делать, в передаче вызвать пустую процедуру... время будет 0 секунд.
-
В Oracle все основные таблицы, и они по 100 000 записей и тащить их куда либо не имеет смысла. Там в хранимке вся обработка и происходит. Вся загвозда во времени выполнения в этом я ограничен
-
>GRAND © (14.11.08 17:02) [20]
>Истинно так!
Паранойя ?
-
> Там в хранимке вся обработка и происходит. Вся загвозда
> во времени выполнения
Ну и какой тогда резон тащить данные на обработку в Оракл, если известно, что ХП сделает это заведомо медленней чем апп-сервер ?
> приходится обработку делать перебором
Это как ?
-
> sniknik (17.11.2008 11:25:25) [25]
Лучше оторвать, больнее будет.
-
> В Oracle все основные таблицы, и они по 100 000 записей и тащить их куда либо не имеет смысла.
каким боком они участвуют в "обработке"? данные из них сравниваются/вычисляются в паре с полученными из аксесса? тогда нужны объединения, индексы, т.е. данные с обоих сторон должны быть в структурированной (табличной) форме. а ты из них делаешь строку, после очень быстро передаешь, и начинаешь парсить и делать опять таблицу (?), для того чтобы можно было обрабатывать в паре с основными...
ты уж как то определись, либо они не участвуют, и тогда постановка задачи идиотская, либо участвуют и тогда время нужно считать в общем, а не только среднюю часть от всего т.е. загрузку.
какой смысл в передаче пусть даже за 0,000001 сек, если данные от такой передачи придётся обрабатывать час?
> Лучше оторвать, больнее будет.
договорились.
-
> Это как ?
это тайна великая есть... ибо Это показывать стыдно. ;о))))
-
Всем спасибо за опсуждение :-)