Выберите в поле Дата в OpenEdge - PullRequest
2 голосов
/ 03 августа 2020

Я пытаюсь сделать выбор в поле «Дата» в таблице UVT_DatesOfVersionsBOPos с помощью Microsoft SQL Server Management Studio (select * from openquery ([PROALPHA], 'select Date from PAVAR.PUB.UVT_DatesOfVersionsBOPos')

К сожалению, я получаю следующее сообщение об ошибке:

The OLE DB provider "MSDASQL" for the connection server "PROALPHA" has the message "[DataDirect] [ODBC Progress OpenEdge Wire Protocol driver] [OPENEDGE] Syntax error in SQL statement at or about" Date from PAVAR.PUB.UVT_DatesOfVersionsB "( 10713) ".

Msg 7321, Level 16, State 2, Line 1

Failed to prepare the select date from PAVAR.PUB.UVT_DatesOfVersionsBOPos query to run for the OLE DB provider "MSDASQL" for the linked server "PROALPHA".

Я предполагаю, что SQL интерпретирует поле Date как функцию Date и поэтому отображает ошибку. Кто-нибудь из вас знает правильный синтаксис, чтобы я мог получить поле?

1 Ответ

3 голосов
/ 03 августа 2020

Синтаксическая ошибка связана с тем, что DATE является зарезервированным словом в OpenEdge SQL. Вы можете использовать ключевые слова в качестве идентификаторов в операторах SQL только в том случае, если вы разделяете их двойными кавычками.

Пример 1: это генерирует синтаксическую ошибку, как вы описали

SQLExplorer>select date from pub.cust1;
=== SQL Exception 1 ===
SQLState=HY000
ErrorCode=-210056
[DataDirect][OpenEdge JDBC Driver][OpenEdge] Syntax error in SQL statement at or about "date from pub.cust1" (10713)

Пример 2: Это работает так, как мы разделяем зарезервированные слова двойными кавычками

SQLExplorer>select "date" from pub.cust1;
date
----------

Ссылка на документацию: https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page / dmsrf / openge- sql -reserved-words. html

...