创建存储过程出现 sql error 1064

【产品名称】oceanBase 3.1

【产品版本】社区版

【问题描述】执行在mysql可执行的存储过程 创建报错.error 1064

执行SQL:

delimiter ;;

CREATE PROCEDURE

p_order

(in p_pre_id VARCHAR(32))

BEGIN

##定义变量

declare i int DEFAULT 1;

declare done int;

declare p_l int;

declare menuId VARCHAR(32) DEFAULT ‘’;

##创建游标,并存储数据

declare cur_test CURSOR for

SELECT menu_id,d_level from s_menu where pre_id=p_pre_id ORDER BY create_time;

##游标中的内容执行完后将done设置为1

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

##打开游标

open cur_test;

##执行循环

posLoop:LOOP

##判断是否结束循环

IF done=1 THEN

LEAVE posLoop;

END IF;

##取游标中的值

FETCH cur_test into menuId,p_l;

##执行更新操作

update s_menu set

order

=i where menu_id = menuId;

set i=i+1;

if p_l=0 THEN

CALL p_order(menuId);

end if ;

END LOOP posLoop;

##释放游标

END

;;

delimiter ;

错误:

Error occurred during SQL script execution

原因:

SQL 错误 [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'PROCEDURE

p_order

(in p_pre_id VARCHAR(32))

BEGIN

##定义变量 declare ’ at line 1

能把脚本放到 sql文件里上传一下吗?

1 个赞

感谢回复,已上传附件.如果信息不完整请提醒我完善

testProcedure.zip (1293 KB)

社区版不支持存储过程, 你看你能不能把存储过程转成外部应用程序来做呢?