MySQL存储过程、函数和游标

这里我新建了两个表,一个users和test

1 CREATE TABLE users(
2     username varchar(20),
3     pwd varchar(30)
4 );
5 CREATE TABLE test(
6     id INT,
7     username VARCHAR(20)
8 )

这里向users表中插入了多条数据,主要是为了测试存储过程和游标的使用

1.不带参数的存储过程,从users表中查出所有数据

1 BEGIN
2 SELECT * FROM users;
3 END

结果和上图一样

2.带参数的存储过程

1 BEGIN
2 SELECT * FROM users WHERE pwd=name_in;
3 END

这里根据传入的pwd不同结果集不同

3.函数

1 RETURN (SELECT users.pwd FROM users WHERE users.username = ‘gxf‘)

下面是游标的使用

这里新建了一个存储过程,并在存储过程中使用游标遍历users表,在遍历的时候向test表中插入一条数据,(1,username)username来自users表中

 1 BEGIN
 2 DECLARE TEMP_NAME VARCHAR(20) DEFAULT ‘GXF‘;
 3 DECLARE TEMP_PWD VARCHAR(30)    DEFAULT ‘123456‘;
 4 DECLARE DONE INT DEFAULT 0;
 5 DECLARE i INT DEFAULT 10;
 6
 7 DECLARE cursor_query CURSOR FOR SELECT * FROM users;
 8 DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;
 9
10 OPEN cursor_query;
11
12 myLoop : LOOP
13 FETCH cursor_query INTO TEMP_NAME, TEMP_PWD;
14 IF DONE = 1 THEN
15 LEAVE myLoop;
16 END IF;
17
18 INSERT INTO test VALUES(1, TEMP_NAME);
19
20 END LOOP myLoop;
21
22 CLOSE cursor_query;
23 END

通过调用使用游标的存储过程后,查询test表

1 CALL DATA_QUERY_CURSOR;
2 SELECT * FROM test;

test表中的记录为

时间: 2024-10-03 22:42:07

MySQL存储过程、函数和游标的相关文章

mysql 存储过程中使用游标中使用临时表可以替代数组效果

mysql不支持数组.但有时候需要组合几张表的数据,在存储过程中,经过比较复杂的运算获取结果直接输出给调用方,比如符合条件的几张表的某些字段的组合计算,mysql临时表可以解决这个问题.临时表:只有在当前连接情况下, TEMPORARY 表才是可见的.当连接关闭时, TEMPORARY 表被自动取消.必须拥有 create temporary table 权限,才能创建临时表.可以通过指定 engine = memory; 来指定创建内存临时表. 先建立要用的数据表及数据: drop table

mysql 存储过程 函数 触发器

mysql存储过程与函数 存储过程demo mysql> delimiter // -- 这里//为修改默认分隔符: mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; // -- 改回来这里的默

mysql存储过程(查询数据库 游标循环 if判断 插入别的数据库)

BEGIN declare f_age int;DECLARE incode1 VARCHAR(100);DECLARE incode2 VARCHAR(100);DECLARE incode3 VARCHAR(100);DECLARE incode4 VARCHAR(100);DECLARE incode5 VARCHAR(100);DECLARE incode6 VARCHAR(100); declare a1 int; declare a2 int; declare a3 int; dec

mysql使用存储过程&函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...废话不多说,我就直接上表结构啦哈,如下: create table dept( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default "",

第12章 mysql 存储过程

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Chapter 20 Stored Programs and Views [6]

MySQL存储过程入门教程

存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程和函数的区别 函数往往作为公式使用,存储过程作为完成某种功能使用. 函数分为表值函数跟标量函数.表值函数是经过一些sql语句方法最后返回一张表,标量函数是经过一些sql语句方法最后返回一个值.

MYSQL存储过程和函数学习笔记

学至Tarena金牌讲师何山,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和函数,可以避免开发人员重复编写相同的SQL语句. MYSQL存储过程和函数是保存在服务器中,在服务器中存储和执行,可以减少客户端和服务器端之间数据传输的消耗. 存储过程就是一组已经保存在数据库中的语句,并且可以随时地调用. 存储过程允许标准组件式编程,存储过程在被创建以后可以在程序中被多次调用而

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

MySQL存储过程/存储过程与自定义函数的区别

语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body 其中: proc_parameter : [IN|OUT|INOUT] parameter_name type 其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出:param_name