当前位置:   article > 正文

mysql fetch语句_Mysql游标和预定义语句的用法

mysql cursor使用 fetch

游标

1语法

1>声明光标

DECLARE cursor_name CURSOR FOR select_statement

这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。

SELECT语句不能有INTO子句。

2>光标OPEN语句

OPEN cursor_name

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

3>光标FETCH语句

FETCH cursor_name INTO var_name [, var_name] ...

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

4>光标CLOSE语句

CLOSE cursor_name

5>用法举例

DROP PROCEDURE IF EXISTS pro_cursor;

DELIMITER //

CREATE PROCEDURE pro_cursor()

BEGIN

DECLARE gid INT;

DECLARE gname VARCHAR(20);

DECLARE ifEnd BOOLEAN DEFAULT FALSE;

DECLARE cur CURSOR FOR SELECT * FROM grade;

#定义一个句柄 当fetch 抓取数据时 会自动调用该句柄 如果找不到数据  会自动调用最后的sql语句 set

# not found等价于 SQLSTATE '02000'

DECLARE CONTINUE HANDLER FOR NOT FOUND SET ifEnd=TRUE;

OPEN cur;

WHILE(ifEnd=FALSE) DO

FETCH cur INTO gid,gname;

IF(ifEnd=FALSE) THEN

SELECT gid,gname;

END IF;

END WHILE;

CLOSE cur;

END

//

CALL pro_cursor;

二 预定义语句

1>结构 :

预制语句的SQL语法基于三个SQL语句:

PREPARE stmt_name FROM preparable_stmt;

EXECUTE stmt_name [USING @var_name [, @var_name] ...];

{DEALLOCATE | DROP} PREPARE stmt_name;

2>举例

--创建表

CREATE TABLE `arcticle` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(200) DEFAULT NULL,

`content` varchar(200) DEFAULT NULL,

`createuser` varchar(200) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

--过程

DROP PROCEDURE IF EXISTS pro_queryTitle;

DELIMITER //

CREATE PROCEDURE pro_queryTitle(title VARCHAR(20),createuser VARCHAR(20))

BEGIN

SET @msql='select * from arcticle where 1=1 ';

IF title IS NOT NULL THEN

# select * from arcticle where 1=1 and title='java是否过时';

SET @msql=CONCAT(@msql,' and title='' ',title,'''');

END IF;

IF createuser IS NOT NULL THEN

SET @msql=CONCAT(@msql,'  and createuser=''',createuser,'''');

END IF;

PREPARE stm1 FROM @msql;

EXECUTE stm1;

DEALLOCATE PREPARE stm1;

END

//

#'java是否过时','张三'

CALL pro_queryTitle(NULL,'张三');

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/425483
推荐阅读
相关标签
  

闽ICP备14008679号