반응형
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
반응형
'programing' 카테고리의 다른 글
MySQL에서 열이 비어 있는지 또는 null인지 확인하려면 어떻게 해야 합니까? (0) | 2022.11.06 |
---|---|
JavaScript에서 닫는 실용적인 용도는 무엇입니까? (0) | 2022.11.06 |
Windows에서 MariaDB와 NodeJs에 액세스하는 방법 (0) | 2022.11.06 |
윈도우 리터레이터를 롤링 또는 슬라이딩합니까? (0) | 2022.11.06 |
mysql에서 올바른 형식 및/또는 유효한 지오메트리를 확인합니다. (0) | 2022.11.06 |