原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT…
CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then 自定义值 else end as 别名 when 值 then:可以理解为当某个字段为某个值的时候,然后就返回自定义值将结果集的字段值进行替换 else:如果上面的when都不满足就执行else结果 常用用法一(case后面有字段或者表达式): when关键字后面写固定值 case关键字后面如果有…
mysql 操作同样有循环语句操作,三种标准循环模式:while, loop,repeat, 外加一种非标准循环:goto [在c或c#中貌似出现过类型循环但是一般不建议用!] 一般格式为:delimiter // 定义结束符 drop procedure if exists wk; 假如存在则删除create procedure name([in | out | input] 参数) begin while-loop-repeat-mysql-code end // delimiter ; 还…
游标 游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力. 使用步骤 声明一个游标: declare 游标名称 CURSOR for table;(这里的table可以是你查询出来的任意集合) 打开定义的游标:open 游标名称; 获得下一行数据:FETCH  游标名称 into field_1, field_2; 需要执行的语句(增删改查):这里视具体情况而定 释放游标:CLOSE 游标名称; 注:存储过程临时…
公司的时间戳存证业务,对发版过程中间数据处理需要用到存储过程.对此做一个简短记录,以免遗忘. DROP procedure record_timestamp_deal ; ##创建存储过程 create procedure record_timestamp_deal() begin ); ; # declare existence boolean ; ##从时间戳记录表中获取ID存入游标 declare cur cursor for select id from time_stamp_log;…
CREATE PROCEDURE questionProc() BEGIN declare pgId ); declare pGuid varchar(); -- 定义游标卡尺 declare done boolean DEFAULT TRUE; -- 获取数据到游标卡尺 DECLARE cur CURSOR FOR select id,qid from tb_question; -- 打开游标卡尺 OPEN cur; -- 开始循环 WHILE done do FETCH cur INTO p…
--标记id --每次查询特定列比标记id大的第一条数据, --同时更新标记id,直到查询结果为空 ) set @id='' begin @id=id from T_SGZ where id>@id order by id break print(@id) end…
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表. DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx`$$ CREATE  PROCEDURE `pro_xx`() BEGIN DECLARE p_oalid INT DEFAULT 0; DECLARE STOP INT DEFAULT 0; DECLARE cur_oalid CURSOR FOR SELECToal.id FROM oal_…
BEGIN ); DECLARE done INT DEFAULT FALSE; DECLARE cursor_rule CURSOR FOR SELECT s.id FROM d_menu_type s ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_rule; l : LOOP FETCH cursor_rule INTO menu_id; IF done THEN LEAVE l; END IF;…
select NULL mykey, * into #mytemp from dbo.DIM_DISTRIBUTOR declare @i int begin ) print @i )) where DISTRIBUTORID=@zj end…