MySQL中的FETCH
语句用于从结果集中检索数据。它通常与SELECT
查询一起使用,以获取查询返回的多个结果。FETCH
语句可以用于遍历结果集,并一次检索一行数据。
以下是FETCH
语句的基本语法:
FETCH [INTO OUTVAR] FROM tbl_name WHERE condition [LIMIT offset, row_count];
INTO OUTVAR
:可选部分,用于将检索到的列值存储到变量中。OUTVAR
必须是一个用户定义的变量。tbl_name
:要从中检索数据的表的名称。condition
:可选部分,用于过滤结果集。LIMIT offset, row_count
:可选部分,用于限制检索的行数。offset
表示从结果集的第几条记录开始检索,row_count
表示要检索的记录数。以下是一个简单的示例,演示如何使用FETCH
语句从名为employees
的表中检索数据,并将结果存储到变量中:
DECLARE @name VARCHAR(50), @age INT;
FETCH INTO @name, @age FROM employees WHERE age > 30;
SELECT @name AS Name, @age AS Age;
在这个示例中,我们声明了两个变量@name
和@age
,并使用FETCH
语句从employees
表中检索年龄大于30的员工的姓名和年龄。然后,我们使用SELECT
语句输出检索到的值。
需要注意的是,FETCH
语句通常与WHILE
循环一起使用,以便遍历整个结果集。以下是一个使用WHILE
循环和FETCH
语句的示例:
DECLARE @name VARCHAR(50), @age INT;
DECLARE cur CURSOR FOR SELECT name, age FROM employees;
OPEN cur;
FETCH NEXT FROM cur INTO @name, @age;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @name AS Name, @age AS Age;
FETCH NEXT FROM cur INTO @name, @age;
END
CLOSE cur;
DEALLOCATE cur;
在这个示例中,我们声明了一个游标cur
,用于从employees
表中检索数据。然后,我们使用OPEN
语句打开游标,并使用FETCH
语句检索第一行数据。接下来,我们使用WHILE
循环遍历结果集,并在每次迭代中使用SELECT
语句输出检索到的值。最后,我们使用CLOSE
和DEALLOCATE
语句关闭游标并释放相关资源。