Запрос (SQL Server 2008 Express) работает в SQL Server Management Studio, но не в Delphi с использованием ADODB - PullRequest
2 голосов
/ 04 октября 2010

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

WITH cte AS (
    SELECT
        windowId, frameIndx, elemIndx, comment, 
        ROW_NUMBER() OVER (PARTITION BY frameIndx ORDER BY elemIndx DESC)
    AS
        rn
    FROM
        dbo.translations
    WHERE
        windowId = 1 AND frameIndx IN (
            SELECT
                indx
            FROM
                dbo.translations_window
            WHERE program_id = 1 AND active = 1
    )
)
SELECT
    windowId, frameIndx, elemIndx, comment
FROM
    cte
WHERE
    rn = 1

Запрос выполняется без проблем при запуске в SQL Server 2008 R2 Developer (независимо от способа), SQL Server 2005 Express и SQL Server 2008 R2 Express сСтудия управления (эта работа за последние два).Но как только я пытаюсь выполнить этот запрос, используя ADODB из Delphi, я получаю сообщение об ошибке.

Incorrect syntax near the keyword WITH

Запрещены ли подобные запросы в экспресс-версиях SQL?в чем проблема в запросе?Клиент использует SQL Express, поэтому мне нужно найти решение этой проблемы, которое работает в экспресс-версии.

1 Ответ

8 голосов
/ 04 октября 2010

Не знаю, поможет ли это, но вы можете попробовать поставить точку с запятой перед вашим запросом:

; WITH cte AS (
...
...