Найдено 48 результатов

petrel
Чт 07 дек 2017 09:47
Форум: Oracle Data Access Components
Тема: TOraStoredProc (dbms_output.get_lines)
Ответы: 9
Просмотры: 20389

Re: TOraStoredProc (dbms_output.get_lines)

Если ни чего не менять тогда:
'ORA-02005: implicit (-1) length not valid for this bind or define datatype'.

Если заменить:
OraStoredProc->ParamByName("LINES")->Size = 32767;
на
OraStoredProc->ParamByName("LINES")->Size = 3999;

'ORA-06502: PL/SQL: numeric or value error: host bind array too small'
'ORA-06512: at line 2'


У нас есть:
SYS.DBMS_OUTPUT.GET_LINES Как таковой нет
SYS.DBMS_OUTPUT.GET_LINES:1 Parametr: 'LINES'-string 'NUMLINES'-float
SYS.DBMS_OUTPUT.GET_LINES:2 Parametr: 'LINES'-Object 'NUMLINES'-float

P.S.
where field1=:param1
-----в предыдущей версии ODAC 9.3.9 если-----
param1 == Null запрос срабатывал.
-----в новой 10.1.3 версии пришлось разделить-----
if( :param1.isNull ) where field1 is null
else where field1=:param1
petrel
Ср 15 ноя 2017 11:44
Форум: Oracle Data Access Components
Тема: TOraStoredProc (dbms_output.get_lines)
Ответы: 9
Просмотры: 20389

Re: TOraStoredProc (dbms_output.get_lines)

[img]
OraStoredProc.jpg
OraStoredProc.jpg (56.48 КБ) 20348 просмотров
[/img]

Если Size заменить на 3999 - то работает.

В нашей предыдущей версии работало и с 32767.

Как правильно поступать с этим параметром ?
Или что поменять в настройках Oracle ?
petrel
Чт 09 ноя 2017 07:04
Форум: Oracle Data Access Components
Тема: TOraStoredProc (dbms_output.get_lines)
Ответы: 9
Просмотры: 20389

Re: TOraStoredProc (dbms_output.get_lines)

В оболочке, после нажатия кнопки 'Execute'
[img]
ORA-02005_ODAC.jpg
ORA-02005_ODAC.jpg (102.95 КБ) 20369 просмотров
[/img]
petrel
Ср 08 ноя 2017 13:20
Форум: Oracle Data Access Components
Тема: TOraStoredProc (dbms_output.get_lines)
Ответы: 9
Просмотры: 20389

Re: TOraStoredProc (dbms_output.get_lines)

Это и был полный текст примера.
Для уточнения:
ODAC 10.1.3
client Oracle 11.2.0.3.0
Windows 7 Service Pack 1

В прикрепленном архиве готовый проект и выполняемый файл.
petrel
Вт 07 ноя 2017 08:36
Форум: Oracle Data Access Components
Тема: TOraStoredProc (dbms_output.get_lines)
Ответы: 9
Просмотры: 20389

TOraStoredProc (dbms_output.get_lines)

Доброе время суток.

ODAC 10.1.3
ORA-02005: implicit (-1) length not valid for this bind or define datatype

OraSession1->ExecSQL("call dbms_output.enable( 20000 )" );
int NumLines = 1;

TOraStoredProc *OraStoredProc = new TOraStoredProc(this);
OraStoredProc->Session = OraSession1;

OraStoredProc->StoredProcName = "dbms_output.get_lines";
OraStoredProc->Prepare();
OraStoredProc->ParamByName("LINES")->Length = NumLines;
OraStoredProc->ParamByName("NUMLINES")->AsInteger = OraStoredProc->ParamByName("LINES")->Length;

/////------Действия на стороне сервера--------------


try {
OraStoredProc->ExecProc();
} catch (Exception &exception) {
//// -------------- ORA-02005: implicit (-1) length not valid for this bind or define datatype --------
Application->ShowException(&exception);
return;
}

Что необходимо подкорректировать для извлечения сообщений ?
petrel
Пт 03 ноя 2017 11:52
Форум: Oracle Data Access Components
Тема: Schema does not exist
Ответы: 3
Просмотры: 16796

Re: Schema does not exist

verion odac 10.1.3 - 'Schema does not exist'
вся информация забирается корректно из диалога и прописывается в реестр (где и нашлась устаревшая информация).
Эта ошибка пропала.

При этом в ConnectDialog не воспроизводятся на кириллице (перевод ввели в компоненте) при выполнении следующие свойства:
Schema, Connect Mode, Direct
petrel
Чт 12 окт 2017 12:33
Форум: Oracle Data Access Components
Тема: Schema does not exist
Ответы: 3
Просмотры: 16796

Schema does not exist

Добрый день!
Версия ODAC 9.3.9 - XE5.

Стандартное(ODAC) окно соединения с СУБД - при нажатии кнопки "соединения" выскакивает (на некоторых машинах) сообщение "Schema does not exist" (причем как с драйвером так и direct).

При подтверждении "соединения" несколько раз вроде соединяется ... но запросы проходят с ошибками.

Если в TOraSession заполнить: сервер, пользователь, пароль ... и поставить ConnectPrompt = false соединение проходит нормально и программа работает.

ЧТО поменять в настройках ConnectDialog или настройках Windows или ... ?
petrel
Вт 11 июл 2017 06:26
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

Re: TOraQuery::Params

Однозначно не могу сформировать пример.
Разница чувствуется только на указанной таблице, но при этом:
1) Если ее переименовать - скорость OCI и Direct продолжает отличаться.
2) Если создать полную копию - все работает одинаково.

При просмотре плана выполнения запроса: поиск выполняется по rowid при наличии INDEX (описанного выше).
petrel
Пт 23 июн 2017 12:59
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

Re: TOraQuery::Params

Выяснилась интересная особенность:
если удалить INDEX (item_code, shop) все начинает работать БЫСТРО.
Но почему только при Direct и наличии Params работает МЕДЛЕННО ?
petrel
Вт 06 июн 2017 10:24
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

Re: TOraQuery::Params

нашли странную зависимость

если
LENGTH(table_up.item_code)=9
заменить на
table_up.ost_code like '_________'

все начинает работать МОМЕНТАЛЬНО
petrel
Пн 05 июн 2017 12:32
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

Re: TOraQuery::Params

Удалось создать маленький тормозящий запрос:

select table_up.isn_inv, table_up.item_code num_code, table_up.producer kpo, OstCode
from table_sale table_up,
(select table_Down.item_code OstCode, table_Down.isn_inv IT
from table_sale table_Down
where table_Down.isn_inv=:p11612
)
where table_up.isn_inv=IT
and table_up.producer = table_up.shop
and LENGTH(table_up.item_code)=9
and substr(table_up.item_code,1,9)=substr(OstCode,1,9)

При создании полной копии таблицы table_sale с другим именем результат повторился только пару раз.
Возможно Oracle отрабатывает по сценарию составленного на основе первого запуска.
Основная таблица (с кол-вом более миллиона записей) все таки часто используется с различными условиями.

Урезанная часть таблицы:
create table table_sale
(
isn_inv NUMBER(6, 0), --ссылка на накладную
item_code VARCHAR2(30) NOT NULL, --код товара в том числе с расширителем
producer NUMBER(6, 0) NOT NULL, --номер поставщика
shop NUMBER(6, 0) --номер продавца
)
Примерная структура данных:
1,'000000001', 22, 23
1,'00000000101', 22, 24
1,'00000000102', 22, 23
...

Эксперимент N1:
1) OraQuery.Active = true; (моментально)
2) OraQuery.Last(); (Direct = 00:02:30, Driver = 00:00:01)

Эксперимент N2:
Добавляю к запросу union all и повторно тот же самый запрос
1) OraQuery.Active = true; (моментально)
2) OraQuery.Last(); (Direct = 00:00:01, Driver = 00:00:01)

Эксперимент N3:
Добавляю к запросу union all и повторно изначальный запрос
1) OraQuery.Active = true; (моментально)
2) OraQuery.Last(); (Direct = 00:00:02, Driver = 00:00:01)

Эксперимент N4:
Добавляю к запросу union all и изначальный запрос
1) OraQuery.Active = true; (моментально)
2) OraQuery.Last(); (Direct = 00:02:37, Driver = 00:00:02)

При этом(другие пользователи стали жаловаться на падение скорости): на стороне сервера Oracle CPU доходит до 98%, на время выполнения запросов с задержки.

P.S. Первоначальный запрос (из 5000 символов)
1) OraQuery.Active = true; (Direct = 00:03:22, Driver = 00:00:01)
2) OraQuery.Last(); (Direct = 00:00:01, Driver = 00:00:01)
petrel
Ср 17 май 2017 12:02
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

Re: TOraQuery::Params

В вашем новом обновлении (10.0.2) не исправлена черепашья скорость в режиме Direct больших запросов с параметрами.

Есть ли надежда исправления скорости выполнения запроса в режиме Direct (с драйвером все летает ~ 2 сек, без драйвера ~ 50 сек.) ...

или надо искать другие компоненты доступа до Oracle ?
petrel
Пн 17 апр 2017 13:26
Форум: Oracle Data Access Components
Тема: TOraQuery::Params
Ответы: 9
Просмотры: 23263

TOraQuery::Params

Добрый день.
ODAC 9.3.9 и 10.0.1 соединение direct

Общий запрос имеет такой вид и общее кол-во символов в запросе более 5000.

select AA, BB, sum(CC), sum(DD)
from (
select a1 AA, b1 BB, c1 CC, d1 DD from table1 where WW = :param1
union all
select a2 AA, b2 BB, c2 CC, d2 DD from table2 where QQ = :param1
union all
select a3 AA, b3 BB, c3 CC, d3 DD from table3 where YY = :param1
union all
select a4 AA, b4 BB, c4 CC, d4 DD from table4 where XX = :param1
union all
select a5 AA, b5 BB, c5 CC, d5 DD from table5 where SS = :param1
)
group by AA, BB
order by AA, BB

WW, QQ, YY, XX, SS - тип NUMBER - индекс
param1 - пять раз одно и тоже имя
каждая из таблиц (table1, table2, table3, table4, table5) имеет значительно больше 100000 записей, результирующий набор такой же порядок.

1) С драйвером Oracle - работает все моментально.
2) С direct есть особенности.
2.1) Если вместо параметров подставить конкретное значение - работает все моментально.
2.2) В оболочке Borland компонент сильно тормозит при нажатии кнопки 'Execute'.
2.3) все типы параметра кроме Number - сильно тормозят (до 2 минут), результат верный.
2.4) параметр типа Number работает моментально если он ОДИН, результат НЕ верный.
2.5) параметр типа Number работает моментально, выдавая ПУСТОЙ НАБОР если их ПЯТЬ (наш случай, а должно быть тысячи).

Что необходимо сделать, что бы direct с ПАРАМЕТРАМИ тоже работало МОМЕНТАЛЬНО?
petrel
Пн 06 июн 2016 11:44
Форум: Oracle Data Access Components
Тема: TParam <> TOraParam
Ответы: 3
Просмотры: 8628

Re: TParam <> TOraParam

Всё понял.
Спасибо.
petrel
Пт 03 июн 2016 12:08
Форум: Oracle Data Access Components
Тема: TParam <> TOraParam
Ответы: 3
Просмотры: 8628

TParam <> TOraParam

Здравствуйте.

ODAC Ver 9.3.9
TOraQuery - создан запрос с одним параметром типа Number.

TOraParam *pParamOra = TOraQuery->Params->Items[0];
TParam *pParam = TOraQuery->Params->Items[0];

pParamOra->Value НЕ РАВНО pParam->Value
хотя TOraParam наследник от TParam.

Как пользоваться pParam->Value ?