mysql declare char()_简述MySQL的存储过程declare语句报错游标示例

本文主要向大家介绍了MySQL的存储过程declare语句报错游标示例,通过具体的实例让大家了解,希望对大家学习MySQL有所帮助。DELIMITER $$

CREATE DEFINER=`root`@`localhost`

PROCEDURE

`stu_ave_cursor_procedure`()

BEGIN

declare aveno char(11);

declare avename char(10);

declare avegrade float;

drop table if exists fail_student;

create table fail_student (aveno char(11),

avename char(10), avegrade float);

open stuave;

while not flag do

fetch stuave into aveno,avename,avegrade;

declare avegrade float;

declare flag int;

declare stuave cursor for

select student.sno,sname,avg(grade)

from student,sc

where student.sno=sc.sno

group by student.sno;

DECLARE CONTINUE HANDLER FOR

NOT FOUND SET flag=1;

set flag=0;

fetch stuave into aveno,avename,avegrade;

if (not flag) then

if (avegrade<60) then

insert into fail_student()

values(aveno,avename,avegrade);

end if;

end if;

end while;

close stuave;

END

DELIMITER ;

DELIMITER $$

USE `student-course` $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `cour_ave_cursor_procedure`()

BEGIN

declare aveno char(11);

declare avename char(10);

declare avegrade float;

declare flag int;

declare courave cursor for

select course.cno,cname,avg(grade)

from course,sc

where course.cno=sc.cno

group by course.cno;

DECLARE CONTINUE HANDLER FOR

NOT FOUND SET flag=1;

set flag=0;

drop table if exists `student-course`.fail_course;

create table fail_course (aveno char(11),avename char(30), avegrade float);

open courave;

while not flag do

fetch courave into aveno,avename,avegrade;

if (not flag) then

if (avegrade<70) then

insert into fail_course()

values(aveno,avename,avegrade);

end if;

end if;

end while;

close courave;

END  $$

DELIMITER ;

DELIMITER $$

DELIMITER ;

不写则会报错

不过到现在都没太明白,为什么 mysql 工具一定要个 delimiter

语法上是不需要 delimiter 就可以判断得出语句分割的,程序用 ODBC 提交多语

句的时候,这种东东就完全没有问题的,所以应该客户端工具稍微改进一下就可以>不要 delimiter 了吧

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值