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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。