【问题标题】:Why am I getting syntax error for the following sql in sybase?为什么我在 sybase 中收到以下 sql 的语法错误?
【发布时间】:2013-10-22 02:20:32
【问题描述】:

我在第 7 行遇到语法错误 - “BEGIN” for 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

有什么建议或指点吗?

【问题讨论】:

  • 您是否尝试过使用 T-SQL IF,而不是 Watcom IF - THEN 语法? infocenter.sybase.com/help/index.jsp?topic=/…
  • @MichaelGardner 它确实奏效了,但不幸的是还没有在更大的范围内工作。我猜如果我们混合使用这两种语法我猜它可能会导致问题?
  • 不确定这是否会导致问题。
  • @MichaelGardner 感谢您的帮助。

标签: tsql syntax-error sybase sqlanywhere


【解决方案1】:

问题正如@Michael 指出的那样,有两种不同类型的方言 - T-SQL and WATCOM-SQL,我不得不用 Watcom-SQL 语法重写 while 循环 以与 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 2020-01-18
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2015-05-31
    相关资源
    最近更新 更多