Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблема использования ключевых слов в качестве идентификаторов объектов базы данных / 9 сообщений из 9, страница 1 из 1
07.11.2005, 09:37
    #33363361
S_Hohlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
Есть Access база данных, например access_file.mdb . В ней есть таблица table_1 , содержащая поле с именем "Order". На сервере (Sybase ASA 9 - 9.0.2.3182) создается удаленное подключение к access_file.mdb через ODBC. Создается proxy таблица для table_1. В хранимой процедуре предпринимается попытка выполнить insert into table_1 ( Order) select t.some_field from some_table t . Сервер категорически отказывается воспринимать слово Order в данном контексте. Варианты "Order" или [Order] также не работают.
Что еще можете посоветовать? Переименование поля в таблице access файла в данном случае невозможно.
...
Рейтинг: 0 / 0
07.11.2005, 10:45
    #33363493
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
Вариант с "Order" работает , только перед этим надо поставить режим quoted-identifier on

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set quoted-identifier on
go

insert into "table_1" ( "Order" ) 
select t."some_field" from "some_table" t 
go

set quoted-identifier off
go

...
Рейтинг: 0 / 0
07.11.2005, 12:38
    #33363793
Vinogrado
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
MasterZivВариант с "Order" работает , только перед этим надо поставить режим quoted-identifier on

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set quoted-identifier on
go

insert into "table_1" ( "Order" ) 
select t."some_field" from "some_table" t 
go

set quoted-identifier off
go


А кто Вам запрецает дать для Proxy таблицы другое имя, а в MDB будет прежнее
...
Рейтинг: 0 / 0
07.11.2005, 13:39
    #33364005
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
VinogradoА кто Вам запрецает дать для Proxy таблицы другое имя, а в MDB будет прежнее

вроде проблема в поле под названием "order"
З.Ы. Проверил на ASA9.0.0 1383 (последний билд под 9.0.0) - так сервер просто падает , дома проверю на 9.0.2
...
Рейтинг: 0 / 0
07.11.2005, 14:17
    #33364113
S_Hohlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
авторА кто Вам запрецает дать для Proxy таблицы другое имя, а в MDB будет прежнее
Никто не запрещает, более того я и присваиваю proxy таблицам имена, отличные от оригинальных. Но дело не в этом. Проблема как раз заключается в использовании ключевого слова для поля в proxy таблице.
1. Уточнение:Could not execute statement.
Server 'RemoteAccessDB':[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
SQLCODE =-660, ODBC 3 State="HY000"
Судя по сообщению об ошибке - проблема, видимо, заключается в настройках соединения с mdb файлом.
2. Слово Order на данный момент пока единственное из ключевых слов, с которым появляется эта ошибка. С другими ключевыми словами, использующимися в качестве имен столбцов (например ID, Type, Status, Leave и т.п.) все работает прекрасно.
3. Выяснить, как при создании proxy таблицы назначить имя столбцу, отличное от оригинального, пока не удалось. Возможно ли такое?
...
Рейтинг: 0 / 0
07.11.2005, 15:37
    #33364368
S_Hohlov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
авторВариант с "Order" работает , только перед этим надо поставить режим quoted-identifier on
SET OPTION quoted_identifier = 'ON'('OFF'); - не решает проблему.
...
Рейтинг: 0 / 0
07.11.2005, 17:34
    #33364857
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
S_Hohlov авторА кто Вам запрецает дать для Proxy таблицы другое имя, а в MDB будет прежнее
Никто не запрещает, более того я и присваиваю proxy таблицам имена, отличные от оригинальных. Но дело не в этом. Проблема как раз заключается в использовании ключевого слова для поля в proxy таблице.
1. Уточнение:Could not execute statement.
Server 'RemoteAccessDB':[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
SQLCODE =-660, ODBC 3 State="HY000"
Судя по сообщению об ошибке - проблема, видимо, заключается в настройках соединения с mdb файлом.
2. Слово Order на данный момент пока единственное из ключевых слов, с которым появляется эта ошибка. С другими ключевыми словами, использующимися в качестве имен столбцов (например ID, Type, Status, Leave и т.п.) все работает прекрасно.
3. Выяснить, как при создании proxy таблицы назначить имя столбцу, отличное от оригинального, пока не удалось. Возможно ли такое?
Проблема в драйвере ODBC, попробуй посмотреть синтаксис в самом Access'е
и попробуй именно данный синтаксис послать ему, еще можно попытаться выгрузить структуру базы и посмотреть, какие параметры использует твой удаленный сервер, там будет куча строчек после create server ....
...
Рейтинг: 0 / 0
07.11.2005, 17:41
    #33364877
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
Что можно попробовать:
1. Сделать в Access на таблицу запрос уже с нормальными названиями полей и именно его подключать в качестве прокси-таблицы.
2. Поиграться с ASA БД опцией NON_KEYWORDS.
Первый вариант предпочительней.
...
Рейтинг: 0 / 0
07.11.2005, 19:38
    #33365117
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема использования ключевых слов в качестве идентификаторов объектов базы данных
все плохо, вот что написано в документации

BOLFeatures not supported for remote data

--------------------------------------------------------------------------------

The following Adaptive Server Anywhere features are not supported on remote data. Attempts to use these features will therefore run into problems:

ALTER TABLE statement against remote tables

Triggers defined on proxy tables will not fire

SQL Remote

Foreign keys that refer to remote tables are ignored

The READTEXT, WRITETEXT, and TEXTPTR functions.

Positioned UPDATE and DELETE

UPDATE and DELETE requiring an intermediate temporary table.

Backwards scrolling on cursors opened against remote data. Fetch statements must be NEXT or RELATIVE 1.

If a column on a remote table has a name that is a keyword on the remote server, you cannot access data in that column. Adaptive Server Anywhere cannot know all of the remote server reserved words. You can execute a CREATE EXISTING TABLE statement, and import the definition but you cannot select that column.

немного врут, правда, поскольку select выполняется, а вот update и insert - никак ;(
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблема использования ключевых слов в качестве идентификаторов объектов базы данных / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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