MySQL数据库学习--数据库游标的简单实现

    xiaoxiao2021-03-25  119

    一、前言

    寒假接触到了数据库游标的概念,一直没有实现。昨日回头看了一下,今早给实现了。

    二、数据库游标的优势

    自己百度、谷歌去吧。

    三、MySQL语法实现

    3.1游标的使用详情

    a.声明游标

    DECLARE cursor_name CURSOR FOR select_statement

    这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句。

    b.游标OPEN语句

    OPEN cursor_name

    这个语句打开先前声明的游标。

    c.游标FETCH语句

    FETCH cursor_name INTO var_name [, var_name] …

    这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。

    d.游标CLOSE语句

    CLOSE cursor_name

    这个语句关闭先前打开的游标。

    3.2代码实现

    1.创建测试数据库、数据表

    CREATE TABLE `users` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_name` varchar(60) NOT NULL DEFAULT '', `user_pass` varchar(64) NOT NULL DEFAULT '', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

    2.创建游标

    将该内容存于一个.sql文件中,比如我将该内容存到了myCursorTest.sql文件中。

    use test; /*选择使用已经创建好的数据库test*/ delimiter | /*使用delimiter告诉数据库该处需要多条SQL命令解析*/ create procedure test_cursor (in param int(10),out result varchar(90)) /*创建存储过程*/ begin /*开始*/ declare name varchar(20); /*声明变量*/ declare pass varchar(20); declare done int; declare cur_test CURSOR for select user_name,user_pass from users; /*声明游标*/ declare continue handler FOR SQLSTATE '02000' SET done = 1; if param then /*开始循环调用*/ select concat_ws(',',user_name,user_pass) into result from test.users where id=param; else open cur_test; repeat fetch cur_test into name, pass; select concat_ws(',',result,name,pass) into result; until done end repeat; close cur_test; end if; /*结束循环*/ end; |/*终结*/

    3.调用游标

    a.在该myCursorTest.sql文件所在的目录下使用命令使文件生效;

    mysql -u root -p < myCursorTest.sql

    b.调用游标;

    call test_cursor(10,@test);/注意参数/

    c.显示游标取到的结果集。

    select @test;

    4.删除游标

    使用命令删除游标:

    drop procedure test_cursor;

    3.3截图参考

    1.创建测试游标 2.调用游标及结果

    四、参考材料

    http://blog.51yip.com/mysql/1281.html http://blog.csdn.net/u011704894/article/details/51223010

    转载请注明原文地址: https://ju.6miu.com/read-18385.html

    最新回复(0)