mysql 存储过程 25
-- 声明与列的类型相同的四个变量
declare id INT(11);
declare CountryCode varchar(200);
declare District varchar(200);
declare Name varchar(200);
DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认false
declare mycursor cursor for ( select id,CountryCode,District,Name from city ); -- 1、定义一个游标mycursor
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true
open mycursor; -- 2、打开游标
myLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到
FETCH mycursor into id, CountryCode,District,Name; -- 将游标当前读取行的数据顺序赋予自定义变量12
IF done THEN -- 判断是否继续循环
LEAVE myLoop; -- 结束循环
END IF;
select id,CountryCode,District,Name; -- 4、显示结果
-- COMMIT; -- 提交事务
END LOOP myLoop; -- 结束自定义循环体
close mycursor; -- 5、关闭游标
end;
哪里写的有问题,为什么没有结果 展开
2018-04-19 · 百度认证:云南新华电脑职业培训学校官方账号
. 关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
MySQL存储过程的创建
(1). 格式
MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]])
[特性 ...] 过程体
这里先举个例子:
mysql> DELIMITER //
mysql> CREATE PROCEDURE proc1(OUT s int)
-> BEGIN
-> SELECT COUNT(*) INTO s FROM user;
-> END
-> //
mysql> DELIMITER ;
- 注:
(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
(2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
(3)过程体的开始与结束使用BEGIN与END进行标识。
2024-08-23 广告