|
|
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
При попытке связаться с индексно-организованной таблицей Oracle я посылаю запрос: SELECT RG, RG_NAME FROM TABLE Но в моей программе на этапе ADOQuery1->Open() выдаётся исключение следующего вида: ФОРМАТ ДАННЫХ НЕ ПОДДЕРЖИВАЕТСЯ. Причём при работе с обычной таблицей всё проходит нормально. Подскажите, кто знает, как решить проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 10:45 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Забыл сказать, я работаю на Builder C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 10:46 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Использовать вместо ADO библиотеку, которая нормально умеет работать с Oracle - ODAC/AnyDAC/DOA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 11:30 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Я слышал про DOA. Но чтобы переходить на DOA мне нужно коренным образом переделывать свою программу. Может кто подскажет, как решить проблему с помощью ADO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 12:25 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
А может дело таки в запросе? Чье исключение возникает? полный текст можете привести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 12:31 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Исключение генерируется Ораклом: ТИП ДАННЫХ НЕ ПОДДЕРЖИВАЕТСЯ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 13:24 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Может быть проблема в несоответствии Oracle-клиента (старенькая версия)... Посмотрите версии клиента и сервера. И код ошибки, если можно... ORA-????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 13:53 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
BiosiИсключение генерируется Ораклом:Тогда должен быть номер ошибки ORA-XXXXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 13:53 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Странно... Но кода ошибки нет. Вот сообщение, выдаваемое отладчиком Builder. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 14:01 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
У меня стоит Oracle 10g ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 14:06 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
BiosiСтранно... Но кода ошибки нет. Вот сообщение, выдаваемое отладчиком Builder.А счего вы взяли, что E Ole Exception генерируется Ораклом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 14:14 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
По всей видимости, я ошибся. Не Ораклом генерируется ошибка. Но суть остаётся та же - с индексно-организованной таблицей ADOQuery не хочет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 14:40 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Я создал маленький проект. Вот текст его основного модуля: #include <vcl.h> #pragma hdrstop #include "main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM TABLE"); ADOQuery1->Open(); } Выдаётся всё та же ошибка что формат данных не поддерживается (для индексно-организованной таблицы). Я подозреваю, что ADO пытается сам индексировать таблицу, а так как она уже индексирована, то получается ошибка. А как сделать чтобы ADOQuery не индексировал таблицу? Может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 16:11 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
BiosiЯ создал маленький проект. Вот текст его основного модуля: ... #include "main.h" ...А покажите, плиз, main.h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 16:15 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Вот текст хидера: #ifndef mainH #define mainH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ADODB.hpp> #include <DB.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TADOQuery *ADOQuery1; TADOConnection *ADOConnection1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 16:23 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Вы уверены, что таблицы, которая дает ошибку и которая не дает ошибку, абсолютно идентичны за исключением типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 16:26 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Вот SQL - текст создания неиндексированной таблицы (с которой всё работает нормально): create table TABLE1 ( RG NUMBER(10) not null, RG_NAME VARCHAR2(60), DT DATE, VAL FLOAT, STATUS NUMBER(10) ); А вот индексно-организованная таблица, при обращении к которой выдаётся ошибка: create table TABLE1 ( RG NUMBER(10) not null, RG_NAME VARCHAR2(60), DT DATE primary key, VAL FLOAT, STATUS NUMBER(10) ) organization index; Название таблицы не TABLE, а TABLE1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 16:40 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Может быть ADO ругается на float? Это новый тип, введённый в 10-ке, проверьте без этого поля. Но всё-же рекомендовал бы посмотреть в сторону ODAC/AnyDAC... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 17:56 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Спасибо, я конечно почитаю побольше про этот DOA, но мне придётся тогда всю свою программу переделывать :( FLOAT работает даже на Oracle 8i. Ведь таблицы то создаются без проблем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 18:01 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
BiosiСпасибо, я конечно почитаю побольше про этот DOA, но мне придётся тогда всю свою программу переделывать :( FLOAT работает даже на Oracle 8i. Ведь таблицы то создаются без проблем! Я имел ввиду тип float для полей таблиц, какой Oracle 8 ? Это новый тип данных, появившийся в 10.1 : http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_whatsnew.htm#i971147 поэтому и предположил, что старая реализация ADO об нём понятия не имеет. Попробуйте поработать с таблицами (в т.ч. и IOT), в которых нет float. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 18:15 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
BiosiСпасибо, я конечно почитаю побольше про этот DOA, но мне придётся тогда всю свою программу переделывать :(Если уж переделывать, то, имхо, никак не на DOA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2007, 18:31 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
binary_floatЯ имел ввиду тип float для полей таблиц, какой Oracle 8 ? Это новый тип данных, появившийся в 10.1 Я попробовал обращаться к таблице, в которой нет поля с типом float, но результат тот же :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 10:55 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Попробуйте каким-нибудь DBMonitor-ом посмотреть какой именно запрос отправляется от клиента к серверу, ADO иногда "умничает" и изменяет запросы (добавляет rowid, например). Ну и проверьте с нормальной библиотекой, чтобы быть уверенным, что проблема именно в ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 11:25 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
Да, есть такое дело. Помимо моего запроса, сам ADO отправляет запрос на поле вида TABLE.ROWID, но, как мне сказали, в индексно-организованной секционированной таблице Oracle такого поля нет, а есть поле UROWID. И как мне перенастроить этот ADO чтобы он не умничал, я не знаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 11:32 |
|
||
|
Проблема доступа к индексно-организованной таблице
|
|||
|---|---|---|---|
|
#18+
По-видимому, проблема таки в uriowid. Только это не поле а тип данных логического поля rowid для index-organized таблиц. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Попробуй LockType = ltReadOnly, если нужно только чтение. Тогда ADO не будет добавлять rowid в запрос (оно ему нужно для уникальной идентификации строки для блокировок/обновлений). Но намного лучшим решением будет переход на ODAC/AnyDAC. Подозреваю, что это не первая и последняя проблема при работе с Oracle через ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34742752&tid=2028324]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 461ms |

| 0 / 0 |
