简单存储过程+游标

CREATE TABLE `pr_user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`user` varchar(255) DEFAULT NULL,
`dp` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

CREATE TABLE `pr_user_tmp` (
`user` varchar(255) DEFAULT NULL,
`dp` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP PROCEDURE IF EXISTS sys_user ;
CREATE PROCEDURE sys_user()
BEGIN
DECLARE done int;
DECLARE u VARCHAR(255);
DECLARE d VARCHAR(255);
DECLARE u_c CURSOR FOR SELECT user u,dp d from pr_user ORDER BY id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN u_c;
c:LOOP
FETCH u_c INTO u,d;
if done=1 then
leave c;
ELSE
IF d=‘d1‘ THEN
INSERT INTO pr_user_tmp VALUES(u,d);
END if;
end if;

END LOOP c;
CLOSE u_c;

end;
CALL sys_user();
SELECT * from pr_user_tmp;

时间: 2024-10-12 14:00:56

简单存储过程+游标的相关文章

mysql 数据库 简单存储过程游标使用

BEGIN #Routine body goes here... DECLARE no_more_record INT DEFAULT 0; DECLARE TEST_ID INT(20); DECLARE TEST_USERNAME VARCHAR(20); DECLARE TEST_SEX INT(2); DECLARE TEST_ADDRESS VARCHAR(20); DECLARE cur_record CURSOR FOR SELECT id, username,sex,addres

SQL存储过程+游标 循环批量()操作数据

本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SE

存储过程 游标

CREATE PROCEDURE [dbo].[RuleExecute_Temp] AS declare @executedate varchar(20) declare @branchcode varchar(50) declare @rulenumber varchar(50) declare @number varchar(20) declare @JLWZCode varchar(20) declare cur cursor for SELECT ExcuteDate,RuleNumbe

存储过程 游标 事例

Create PROC [GetPerformance] ( @vp varchar(25), @range char(1) , @depetid int , @Q varchar(1), @QBeginDate datetime , @QEndDate datetime , @YBeginDate datetime , @YEndDate datetime ) AS Begin --1:创建临时表存储全部数据的容器 Create Table #MyTempTable ( Did int , M

一次使用存储过程游标遇到的坑

一次使用存储过程游标遇到的坑 有这样一个需求:统计某省某市某区前6个月的数据,直接sql查询效率很低,于是打算做定时任务,用定时器执行存储过程的方式在每月初统计上月的相关数据. 使用存储过程就要用到游标了,之前很少写存储过程,对游标也不是熟悉,咋办呢,现学现用啦. 创建存储过程 1 CREATE 2 [DEFINER = { user | CURRENT_USER }] 3 PROCEDURE sp_name ([proc_parameter[,...]]) 4 [characteristic

mysql中存储过程游标使用

mysql游标的使用能够循环获取结果级进行操作 定义游标 DECLARE id int; DECLARE name varchar(30); DECLARE cursor_name CURSOR FOR select c_id,c_name from tables (把select查询到的数据赋给游标cursor_name ) OPEN cursor_name (打开游标) FETCH cursor_name INTO id,name; (打开游标去取一条值如果该值存在,并把游标前进该行) CL

Oracle存储过程,游标使用

Oracle存储过程: 语法: CREATE [OR REPLACE] PROCEDURE procedure_name (arg1 [mode1] datatype1,arg2 [mode2] datatype2,...) IS [AS] PL/SQL BLOCK; mode用于指定输入输出参数:IN为输入参数,OUT为输出参数,当为输入参数时可以省去IN,OUT不能省去. 如果没有输入输出参数,可以省去 (arg1 [mode1] datatype1,arg2 [mode2] datatyp

MySQL 存储过程/游标/触发器/事务

来源:http://www.cnblogs.com/zhuyp1015/p/3575823.html 将会用到的几个表 mysql> DESC products; +------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+-

Oracle数据库PL/SQL存储过程游标触发器

创建一个添加FOOD的存储过程 create or replace procedure add_food_pro (name in varchar,price in number,description in varchar) as  begin insert into food (f_name,f_price,description)values(name,price,description); commit; end; --下面的代码是调用存储过程 begin add_food_pro('糖