zoukankan      html  css  js  c++  java
  • 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表中的记录为

  • 相关阅读:
    7种思维
    微服务架构
    最近面试被问到一个问题,AtomicInteger如何保证线程安全?
    Socket netty ...
    Spring-Boot配置文件web性能(服务器)配置项
    P2P互联网金融企业的四大转型方向
    分布式,微服务 区别联系 理解.
    几个好问题
    netty
    结构化思维
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4147453.html
Copyright © 2011-2022 走看看