powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема доступа к индексно-организованной таблице
25 сообщений из 26, страница 1 из 2
Проблема доступа к индексно-организованной таблице
    #34740802
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При попытке связаться с индексно-организованной таблицей Oracle я посылаю запрос:
SELECT RG, RG_NAME FROM TABLE
Но в моей программе на этапе ADOQuery1->Open() выдаётся исключение следующего вида:
ФОРМАТ ДАННЫХ НЕ ПОДДЕРЖИВАЕТСЯ.
Причём при работе с обычной таблицей всё проходит нормально. Подскажите, кто знает, как решить проблему.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34740804
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать, я работаю на Builder C++
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34740992
ODAC-овец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использовать вместо ADO библиотеку, которая нормально умеет работать с Oracle - ODAC/AnyDAC/DOA.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741229
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я слышал про DOA. Но чтобы переходить на DOA мне нужно коренным образом переделывать свою программу. Может кто подскажет, как решить проблему с помощью ADO?
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741248
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может дело таки в запросе?
Чье исключение возникает? полный текст можете привести?
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741505
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исключение генерируется Ораклом:
ТИП ДАННЫХ НЕ ПОДДЕРЖИВАЕТСЯ
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741635
Может быть проблема в несоответствии Oracle-клиента (старенькая версия)...
Посмотрите версии клиента и сервера.
И код ошибки, если можно... ORA-?????
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741636
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BiosiИсключение генерируется Ораклом:Тогда должен быть номер ошибки ORA-XXXXX
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741669
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно... Но кода ошибки нет. Вот сообщение, выдаваемое отладчиком Builder.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741687
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня стоит Oracle 10g
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741728
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BiosiСтранно... Но кода ошибки нет. Вот сообщение, выдаваемое отладчиком Builder.А счего вы взяли, что E Ole Exception генерируется Ораклом?
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34741849
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По всей видимости, я ошибся. Не Ораклом генерируется ошибка. Но суть остаётся та же - с индексно-организованной таблицей ADOQuery не хочет работать.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742217
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я создал маленький проект. Вот текст его основного модуля:

#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 не индексировал таблицу?
Может
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742231
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BiosiЯ создал маленький проект. Вот текст его основного модуля:
...
#include "main.h"
...А покажите, плиз, main.h
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742264
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот текст хидера:

#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
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742283
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы уверены, что таблицы, которая дает ошибку и которая не дает ошибку, абсолютно идентичны за исключением типа?
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742349
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот 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
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742736
binary_float
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть ADO ругается на float? Это новый тип, введённый в 10-ке, проверьте без этого поля.

Но всё-же рекомендовал бы посмотреть в сторону ODAC/AnyDAC...
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742752
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я конечно почитаю побольше про этот DOA, но мне придётся тогда всю свою программу переделывать :(
FLOAT работает даже на Oracle 8i. Ведь таблицы то создаются без проблем!
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742811
binary_float
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34742863
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BiosiСпасибо, я конечно почитаю побольше про этот DOA, но мне придётся тогда всю свою программу переделывать :(Если уж переделывать, то, имхо, никак не на DOA.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34744006
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
binary_floatЯ имел ввиду тип float для полей таблиц, какой Oracle 8 ? Это новый тип данных, появившийся в 10.1
Я попробовал обращаться к таблице, в которой нет поля с типом float, но результат тот же :(
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34744117
DBMonitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте каким-нибудь DBMonitor-ом посмотреть какой именно запрос отправляется от клиента к серверу, ADO иногда "умничает" и изменяет запросы (добавляет rowid, например).
Ну и проверьте с нормальной библиотекой, чтобы быть уверенным, что проблема именно в ADO.
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34744150
Biosi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, есть такое дело. Помимо моего запроса, сам ADO отправляет запрос на поле вида TABLE.ROWID, но, как мне сказали, в индексно-организованной секционированной таблице Oracle такого поля нет, а есть поле UROWID. И как мне перенастроить этот ADO чтобы он не умничал, я не знаю :(
...
Рейтинг: 0 / 0
Проблема доступа к индексно-организованной таблице
    #34744310
Тынц.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-видимому, проблема таки в 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.
Connected to Oracle9i Enterprise Edition Release  9 . 2 . 0 . 5 . 0  

SQL> create table TEST
   2   (
   3     ID NUMBER
   4   );
 
Table created
 
SQL> create table IOT_TEST
   2   (
   3     ID NUMBER not null,
   4     constraint PK primary key (ID)
   5   )
   6   organization index;
 
Table created
 
SQL> insert into test values( 1 );
 
 1  row inserted
 
SQL> insert into iot_test values( 1 );
 
 1  row inserted
 
SQL> commit;
 
Commit complete
 
SQL> select dump(rowid) from test;
 
DUMP(ROWID)
--------------------------------------------------------------------------------
Typ= 69  Len= 10 :  0 , 10 , 149 , 237 , 1 , 66 , 89 , 94 , 0 , 0 
 
SQL> select dump(rowid) from iot_test;
 
DUMP(ROWID)
--------------------------------------------------------------------------------
Typ= 208  Len= 10 :  2 , 4 , 1 , 66 , 89 , 136 , 2 , 193 , 2 , 254 
 
SQL> 

ADO, скорее всего, не понимает Typ=208.

Попробуй LockType = ltReadOnly, если нужно только чтение. Тогда ADO не будет добавлять rowid в запрос (оно ему нужно для уникальной идентификации строки для блокировок/обновлений).

Но намного лучшим решением будет переход на ODAC/AnyDAC. Подозреваю, что это не первая и последняя проблема при работе с Oracle через ADO.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема доступа к индексно-организованной таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]