programing

mariadb procedure phmyadmin 오류입니다.

shortcode 2022. 11. 6. 16:28
반응형

mariadb procedure phmyadmin 오류입니다.

PHPmyadmin sql 상자에서 저장 프로시저를 생성하는 동안 다음 오류가 발생했습니다.

1064 - SQL 구문에 오류가 있습니다.MariaDB 서버 버전에 대응하는 매뉴얼에서 1행의 'BEGIN DECLARE ref_id varchar(10)' 근처에서 사용할 올바른 구문을 확인하십시오.

CREATE PROCEDURE get_tree(IN id varchar)
 BEGIN
 DECLARE ref_id varchar(10);
 DECLARE userid varchar(10);
 SET userid = id;
 SET ref_id='';
 SELECT ref_id into ref_id 
 FROM user WHERE user_id=id ;
 create TEMPORARY  table IF NOT EXISTS temp_table as (select * from user where 1='');
 truncate table temp_table;
 WHILE ref_id <> '' DO
   insert into temp_table select * from user WHERE user_id=userid;
   SET userid = ref_id;
   SET ref_id='';
   SELECT ref_id into ref_id
   FROM user WHERE user_id=userid;
 END WHILE;
 select * from temp_table;
 END

문제는 프로시저 파라미터입니다.길이가 없으면 varchar를 사용할 수 없습니다.그럴 것 같네요.

CREATE PROCEDURE get_tree(IN id varchar(10))
 BEGIN
 ...

(또는 원하는 길이로 사용할 수도 있지만 10이 합리적인 선택인 것 같습니다).

다음과 같은 구분 기호를 추가하여 문제를 해결했습니다.

DELIMITER $$
CREATE PROCEDURE get_tree(IN id varchar(10)) 
BEGIN
 DECLARE ref_id varchar(10);
 DECLARE userid varchar(10);
 SET userid = id;
 SET ref_id='';
 SELECT ref_id into ref_id 
 FROM user WHERE user_id=id ;
 create TEMPORARY  table IF NOT EXISTS temp_table as (select * from user where 1='');
 truncate table temp_table;
 WHILE ref_id <> '' DO
   insert into temp_table select * from user WHERE user_id=userid;
   SET userid = ref_id;
   SET ref_id='';
   SELECT ref_id into ref_id
   FROM user WHERE user_id=userid;
 END WHILE;
 select * from temp_table;


END$$
DELIMITER ;

언급URL : https://stackoverflow.com/questions/40627389/mariadb-procedure-phpmyadmin-error

반응형