Почему я получаю синтаксическую ошибку для следующего sql в sybase?

Я получаю синтаксическую ошибку в строке 7 - "BEGIN" для while -

 BEGIN
        IF EXISTS(SELECT 1 from table1)
        THEN
            IF EXISTS(SELECT 1 from table2)
            THEN
            WHILE EXISTS(SELECT 1 FROM table3)
            BEGIN
                BEGIN TRANSACTION;

                COMMIT TRANSACTION;
            END
            END IF;
        END IF;
    END

Любые предложения или указатели?


person Vishal    schedule 21.10.2013    source источник
comment
Пробовали ли вы использовать синтаксис T-SQL IF вместо синтаксиса Watcom IF - THEN? infocenter.sybase.com/help/index.jsp?topic=/   -  person Michael Gardner    schedule 21.10.2013
comment
@MichaelGardner Это сработало, но, к сожалению, пока не работает в целом. Я предполагаю, что если мы будем использовать оба синтаксиса, я думаю, это может вызвать проблемы?   -  person Vishal    schedule 21.10.2013
comment
не уверен, вызывает ли это проблемы или нет.   -  person Michael Gardner    schedule 21.10.2013
comment
@MichaelGardner Спасибо за вашу помощь.   -  person Vishal    schedule 21.10.2013


Ответы (1)


Проблема заключалась в том, что, как указал @Michael, существует два разных типа диалектов: T -SQL и WATCOM-SQL, мне пришлось переписать цикл while в синтаксисе Watcom-SQL, чтобы он был совместим с остальным синтаксисом Watcom-sql -

BEGIN
        IF EXISTS(SELECT 1 from table1)
        THEN
            IF EXISTS(SELECT 1 from table2)
            THEN
            WHILE EXISTS(SELECT 1 FROM table3) LOOP
            BEGIN
                BEGIN TRANSACTION;

                COMMIT TRANSACTION;
            END LOOP;
            END IF;
        END IF;
    END
person Vishal    schedule 21.10.2013