在 PHPmyadmin sql box 中创建存储过程时出现以下错误:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') BEGIN DECLARE ref_id varchar(10)' at line 1
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 似乎是一个合理的选择)。
关于stored-procedures - mariadb程序phpmyadmin报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627389/