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表中的记录为
Please call me JiangYouDang!