mysql에서 오류가 발생 함 — 트리거를 생성하는 동안 # 1064 오류


-1

try.라는 테이블에 대한 트리거를 만들어야합니다. 테이블에 무언가가 입력 된 후 실행 #1064됩니다.

BEGIN
DECLARE aa decimal(4,3);
DECLARE bb decimal(4,3);
DECLARE cc decimal(4,3);
DECLARE cur1 CURSOR FOR SELECT a,b,c FROM site;
OPEN cur1
FETCH NEXT FROM cur1 into aa,bb,cc;
WHILE FETCH_STATUS=0
BEGIN
PRINT aa
END
END

이 같은 오류를 보여줍니다

 MySQL said: #1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 'FETCH NEXT FROM cur1 
into aa,bb,cc; WHILE FETCH_STATUS=0 BEGIN PRINT aa END ' at line 7

나는 촉발하는 초보자입니다. 도와주세요 ... 감사합니다

답변:


0

명령을 구분하기 위해 세미콜론을 일관성없이 사용하는 것은 (적어도 일부) 문제 일 것입니다. 각 명령 끝에 하나가 필요합니다. :)

Open cur1;"Print"문과 같이 이후에 있어야하는 독립 실행 형 명령입니다 .

그렇지 않기 때문에 MySQL은 두 줄을 단일 명령으로 해석합니다. OPEN cur1 FETCH NEXT FROM cur1 into aa,bb,cc;이것은 유효하지 않은 명령입니다.

주석 후 편집 :

보고 한 오류에서 알 수 있듯이 구문 오류가 있습니다. 세미콜론을 잘못 사용하여 (아직도) 있지만 While 문 사용법에 오류가 있습니다. While루프는이 있어야 do하고, 함께 종료 할 End While(필수 추가 시작 / 종료 블록).

MySQL 도움말 : 13.6.5.8 WHILE 구문을 확인하십시오 .

이 시도:

BEGIN
    DECLARE aa decimal(4,3);
    DECLARE bb decimal(4,3);
    DECLARE cc decimal(4,3);
    DECLARE cur1 CURSOR FOR SELECT a,b,c FROM site;
    OPEN cur1;
    FETCH NEXT FROM cur1 into aa,bb,cc;
    WHILE FETCH_STATUS=0 DO
        PRINT aa;
    END WHILE;
END;

MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN PRINT aa; END END' at line 9
sri

내가 말했듯이, 일치하지 않는 세미콜론 사용법입니다. "END"는 명령의 끝이므로 명령문 / 명령을 종료하려면 세미콜론이 있어야합니다. 답변을 업데이트하겠습니다.
Ƭᴇcʜιᴇ007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.