首页 > 代码库 > MySQL存储过程、函数和游标

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 BEGIN2 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表中的记录为

MySQL存储过程、函数和游标