stored-procedures - mariadb程序phpmyadmin报错

标签 stored-procedures phpmyadmin mariadb

在 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/

相关文章:

mysql - 在 phpMyAdmin 上添加外键失败

Mysql性能差

mysql - mysql select语句中where子句中的if语句

sql-server - 将SSRS中的多个值参数传递给存储过程

mysql - 在 MySQL 中创建存储过程

mysql - 如何在 phpmyadmin 中将 "Relational display column"设置为默认值

mysql - 如何取回 MySQL/MariaDB 中更新的所有行

mysql - 如何在没有 MariaDB 语法错误的情况下进行替换

mysql - 如何从 MySQL 触发器调用存储过程或函数?

mysql - 创建一个 MySQL 存储过程来更新记录