현재 버전

mysql storedprocedure

MySQL 스토어드프로시저 생성 시 1064 에러메세지가 뜹니다.


mysql 을 하이디 사용해서 하고 있는데

아래 코드를 돌리면 

Error 1064(42000) : 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 '' at Line 3

이라는 에러메세지가 나오고,

DECLARE hakbun CHAR(6); 부터 SELECT str; 까지를 주석처리한 후에 실행하면 프로시저가 잘 생성됩니다.

혹시 몰라서 코드를 한 줄 한 줄 -- 으로 주석처리해서 찾아봤는데도 똑같은 에러메세지가 나옵니다.

이유가 뭘까요?



+ 해결 했습니다.


수정 이력

2021-10-06 03:05:55 에 아래 내용에서 변경 됨 #3

mysql 을 하이디 사용해서 하고 있는데

아래 코드를 돌리면 

Error 1064(42000) : 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 '' at Line 3

이라는 에러메세지가 나오고,

DECLARE hakbun CHAR(6); 부터 SELECT str; 까지를 주석처리한 후에 실행하면 프로시저가 잘 생성됩니다.

혹시 몰라서 코드를 한 줄 한 줄 -- 으로 주석처리해서 찾아봤는데도 똑같은 에러메세지가 나옵니다.

이유가 뭘까요?


delimiter //

CREATE PROCEDURE sungjukmgmt()

BEGIN

DECLARE hakbun CHAR(6);

DECLARE irum VARCHAR(20);

DECLARE kor, eng, mat, tot INT DEFAULT 0;

DECLARE average  DECIMAL(5, 2) DEFAULT 0.00;

DECLARE grade CHAR(1) DEFAULT 'F';

DECLARE str VARCHAR(500);

SET hakbun = '20-001';   SET irum = '백두산';

SET kor = 78, eng = 89, mat = 99;

SET tot = kor + eng + mat;

SET average = tot / 3;

CASE

WHEN average >= 90 THEN SET grade = 'A';

WHEN average >= 80 THEN SET grade = 'B';

WHEN average >= 70 THEN SET grade = 'C';

WHEN average >= 60 THEN SET grade = 'D';

ELSE SET grade = 'F';

END CASE;

SET str = CONCAT('학번 ==> ', hakbun, CHAR(10));

SET str = CONCAT(str, '이름 ==> ', irum, CHAR(10));

SET str = CONCAT(str, '국어 ==> ', kor, CHAR(10));

SET str = CONCAT(str, '영어 ==> ', eng, CHAR(10));

SET str = CONCAT(str, '수학 ==> ', mat, CHAR(10));

SET str = CONCAT(str, '총점 ==> ', tot, CHAR(10));

SET str = CONCAT(str, '평균 ==> ', average, CHAR(10));

SET str = CONCAT(str, '평점 ==> ', grade);

SELECT str;

END 

//

delimiter ;


CALL sungjukmgmt();


DROP PROCEDURE sungjukmgmt;



+ 해결 했습니다.

2021-09-06 16:13:26 에 아래 내용에서 변경 됨 #2

mysql 을 하이디 사용해서 하고 있는데

아래 코드를 돌리면 

Error 1064(42000) : 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 '' at Line 3

이라는 에러메세지가 나오고,

DECLARE hakbun CHAR(6); 부터 SELECT str; 까지를 주석처리한 후에 실행하면 프로시저가 잘 생성됩니다.

혹시 몰라서 코드를 한 줄 한 줄 -- 으로 주석처리해서 찾아봤는데도 똑같은 에러메세지가 나옵니다.

이유가 뭘까요?


delimiter //

CREATE PROCEDURE sungjukmgmt()

BEGIN

DECLARE hakbun CHAR(6);

DECLARE irum VARCHAR(20);

DECLARE kor, eng, mat, tot INT DEFAULT 0;

DECLARE average  DECIMAL(5, 2) DEFAULT 0.00;

DECLARE grade CHAR(1) DEFAULT 'F';

DECLARE str VARCHAR(500);

SET hakbun = '20-001';   SET irum = '백두산';

SET kor = 78, eng = 89, mat = 99;

SET tot = kor + eng + mat;

SET average = tot / 3;

CASE

WHEN average >= 90 THEN SET grade = 'A';

WHEN average >= 80 THEN SET grade = 'B';

WHEN average >= 70 THEN SET grade = 'C';

WHEN average >= 60 THEN SET grade = 'D';

ELSE SET grade = 'F';

END CASE;

SET str = CONCAT('학번 ==> ', hakbun, CHAR(10));

SET str = CONCAT(str, '이름 ==> ', irum, CHAR(10));

SET str = CONCAT(str, '국어 ==> ', kor, CHAR(10));

SET str = CONCAT(str, '영어 ==> ', eng, CHAR(10));

SET str = CONCAT(str, '수학 ==> ', mat, CHAR(10));

SET str = CONCAT(str, '총점 ==> ', tot, CHAR(10));

SET str = CONCAT(str, '평균 ==> ', average, CHAR(10));

SET str = CONCAT(str, '평점 ==> ', grade);

SELECT str;

END 

//

delimiter ;


CALL sungjukmgmt();


DROP PROCEDURE sungjukmgmt;




2021-09-06 13:34:12 에 아래 내용에서 변경 됨 #1

mysql 을 하이디 사용해서 하고 있는데

아래 코드를 돌리면 

Error 1064(42000) : 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 '' at Line 3

이라는 에러메세지가 나오고,

DECLARE hakbun CHAR(6); 부터 SELECT str; 까지를 주석처리한 후에 실행하면 프로시저가 잘 생성됩니다.

혹시 몰라서 코드를 한 줄 한 줄 -- 으로 주석처리해서 찾아봤는데도 똑같은 에러메세지가 나옵니다.

이유가 뭘까요?


delimiter //

CREATE PROCEDURE sungjukmgmt()

BEGIN

DECLARE hakbun CHAR(6);

DECLARE irum VARCHAR(20);

DECLARE kor, eng, mat, tot INT DEFAULT 0;

DECLARE average  DECIMAL(5, 2) DEFAULT 0.00;

DECLARE grade CHAR(1) DEFAULT 'F';

DECLARE str VARCHAR(500);

SET hakbun = '20-001';   SET irum = '백두산';

SET kor = 78, eng = 89, mat = 99;

SET tot = kor + eng + mat;

SET average = tot / 3;

/*

IF average >= 90 THEN SET grade = 'A';

ELSEIF average >= 80 THEN SET grade = 'B';

ELSEIF average >= 70 THEN SET grade = 'C';

ELSEIF average >= 60 THEN SET grade = 'D';

ELSE SET grade = 'F';

END IF;

*/

CASE

WHEN average >= 90 THEN SET grade = 'A';

WHEN average >= 80 THEN SET grade = 'B';

WHEN average >= 70 THEN SET grade = 'C';

WHEN average >= 60 THEN SET grade = 'D';

ELSE SET grade = 'F';

END CASE;

SET str = CONCAT('학번 ==> ', hakbun, CHAR(10));

SET str = CONCAT(str, '이름 ==> ', irum, CHAR(10));

SET str = CONCAT(str, '국어 ==> ', kor, CHAR(10));

SET str = CONCAT(str, '영어 ==> ', eng, CHAR(10));

SET str = CONCAT(str, '수학 ==> ', mat, CHAR(10));

SET str = CONCAT(str, '총점 ==> ', tot, CHAR(10));

SET str = CONCAT(str, '평균 ==> ', average, CHAR(10));

SET str = CONCAT(str, '평점 ==> ', grade);

SELECT str;

END 

//

delimiter ;


CALL sungjukmgmt();


DROP PROCEDURE sungjukmgmt;