介绍游标
游标的使用方式
临时表
这期内容当中小编将会给大家带来有关怎么在Mysql存储过程中利用游标循环对临时表进行读取,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
游标
游标(光标)是用于查看或者处理结果集中的数据的一种方法。游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。
游标的使用方式
定义游标:声明游标名称指针表;(表也可以是选择出来的结果集)
打开游标:开放游标名称,
从结果集获取数据到变量:获取游标名称field1, field2;
执行语句:执行需要处理数据的语句
关闭游标:近游标名称;
开始 #,才能声明自定义变量 declare 才能c_stgId 智力; declare 才能;c_stgName  varchar (50); #,才能声明游标结束变量 declare 才能done INT  DEFAULT 0; #,才能声明游标,cr 以及游标读取到结果集最后的处理方式 declare 才能cr cursor  for select 名字,StgId 得到StgSummary limit 3; declare 才能continue handler  for not found set done =, 1; #,才能打开游标 open 才能;铬; #,才能循环 readLoop才能:循环 ,,,#,获取游标中值并赋值给变量 ,,,fetch cr into c_stgName, c_stgId; ,,,#,判断游标是否到底,若到底则退出游标 ,,,#,需要注意这个判断 ,,,IF done =1,然后 ,,,,,LEAVE readLoop;, ,,,最终获得如果,, ,,,, ,,,,,SELECT c_stgName, c_stgId; ,,,, 最终获得才能LOOP readLoop; ,,,,关闭游标 close 才能;铬; 结束
声明变量声明语句注意点:
- <李>
声明语句通常用来声明本地变量,游标,条件或者处理
李> <李>声明语句只允许出现在开始…结尾语句中而且必须出现在第一行
李> <李>声明的顺序也有要求,通常是先声明本地变量,再是游标,然后是条件和处理程序
自定义变量命名注意点:
自定义变量的名称不要和游标的结果集字段名一样。若相同会出现游标给变量赋值无效的情况。
临时表
临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间,因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表。
与普通创建语句的区别就是使用临时关键字
CREATE TEMPORARY TABLE StgSummary ( ,Name VARCHAR (50), NOT 空, ,StgId INT  NOT NULL  DEFAULT 0 );
临时表使用限制
- <李>
在同一个查询语句中,只能查找一次临时表同。样在一个存储过程中也不能多次查询临时表。但是不同的临时表可以在一个查询中使用。
李> <李>不能用重命名来重命名一个临时表,但是可以用ALTER TABLE代替
李>ALTER TABLE orig_name RENAME new_name;
- <李>
临时表使用完以后需要主动放弃掉
DROP TEMPORARY TABLE IF EXISTS StgTempTable;
存储过程中使用游标循环读取临时表数据
开始 # #,创建临时表 CREATE TEMPORARY  TABLE if  not exists StgSummary ( ,Name VARCHAR (50), NOT 空, ,StgId INT  NOT NULL  DEFAULT 0 ); TRUNCATE TABLE  StgSummary; # #,新增临时表数据 INSERT INTO  StgSummary(名称、StgId) select & # 39;临时数据& # 39;1 开始 #,自定义变量 declare c_stgId  int; declare c_stgName  varchar (50); declare done  INT DEFAULT 0; declare cr  cursor for  select 名字,StgId 得到StgSummary ORDER BY StgId desc LIMIT 3; declare continue  handler for not  found set done =, 1; ——,打开游标 open 铬; testLoop:循环 ——,获取结果 fetch cr  into c_stgName c_stgId; IF done =1,然后 LEAVE testLoop, 最终获得;如果, ,, SELECT 才能c_stgName c_stgId; 最终获得LOOP testLoop; ——,关闭游标 close 铬; 结束; DROP TEMPORARY  TABLE IF EXISTS  StgSummary; 结束;怎么在Mysql存储过程中利用游标循环对临时表进行读取