2017-03-08 11 views
0

sybase에서 WHILE을 사용할 때 매우 이상한 문제가 발생합니다. 이유는이 코드를 실행합니다Sybase : ';'을 사용하면 WHILE 문에서 매우 이상한 동작이 발생합니다.

BEGIN 
WHILE 'toto' = 'titi' 
BEGIN 
    DECLARE @val int 
    SELECT * FROM randomtable1 
    SELECT * FROM randomtable2 
    END 
END 

그리고하지이 하나?

BEGIN 
DECLARE @val INT; 

WHILE 'toto' = 'titi' 
BEGIN 
    DECLARE @val int 
    SELECT * FROM randomtable1 
    SELECT * FROM randomtable2 
END 
END 

실제로 나는 ';' 내 스크립트에서 WHILE 문으로 또는 SYI 문에서 벗어나면 Sybase는 WHILE 직후에 BEGIN 근처에 구문 오류를 반환합니다. sybase 설명서를 읽고 다시 읽었으므로 여기에서 일어나는 일을 이해하지 못합니다.

내가 제공하는 예제는 내가 가진 오류를 재현하는 단순화이지만, 이것은 내가하려고하는 실제 스크립트가 아닙니다.

나는 인턴 과정에 있으며 Sybase를 처음으로 발견합니다. 나는 무언가를 놓친 것을 두려워합니다.

아이디어가 있으십니까? 당신은 와트 컴 SQL (원본, 네이티브 SQL Anywhere를 방언)과 거래-SQL 혼합되어 마치 사전

답변

1

감사 (사이베이스 ASE에서를, 부분적으로도 어느 곳 SQL 지원). 같은 SQL 일괄 처리에서 두 가지를 혼합 할 수는 없습니다.

  • Watcom은 ';' 문 분리 문자로 Transact-SQL은 ';'을 볼 때 오류를 발생시킵니다.

  • Transact-SQL은 WHILE과 마찬가지로 명령문 그룹화에 BEGIN-END를 사용합니다. 그러나 Watcom에서 BEGIN-END는 명령문을 그룹화하지 않지만 예외 처리 단위입니다.

  • Watcom에서 'WHILE ... LOOP ... END LOOP;'를 사용하십시오. 구문

+0

이 답변을 주셔서 감사합니다. – Cheniflo