2013-10-21 48 views
1

我得到第7行的語法錯誤 - 「BEGIN」 的同時 -爲什麼我在sybase中獲得以下sql語法錯誤?

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 

任何建議或指針?

+1

您是否嘗試過使用T-SQL'IF',而不是Watcom'IF - THEN'語法? http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.sqlanywhere.12.0.1/dbreference/if-tsql-statement.html –

+0

@MichaelGardner它確實有效,但不幸的是沒有但在更大的圖景中工作。我猜如果我們使用兩種語法混合我猜這可能會導致問題? – Vishal

+0

不確定是否會導致問題。 –

回答

1

的問題是作爲@邁克爾指出,有兩種不同類型的方言 - T-SQL and 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 
相關問題