游标概念
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用,尽管游标能遍历结果集中的所有行,但他一次只能指向一行。
游标操作
游标操作一般分为四步:
- 声明游标
- 打开游标
- 提取数据
- 关闭释放游标
- 示例
--1.创建一个游标
DECLARE my_cursor CURSOR FOR --my_cursor 为定义游标名称
SELECT code,name FROM dbo.zy_bill_item --这是游标my_cursor的值,根据业务决定T-SQL语句
--2.打开游标
OPEN my_cursor
--声明变量
DECLARE @code VARCHAR(10)
DECLARE @name VARCHAR(20)
--3.循环游标提取数据
FETCH NEXT FROM my_cursor INTO @code,@name --获取my_cursor数据放入@code和@name中
WHILE @@FETCH_STATUS=0 --@@FETCH_STATUS全局变量(0成功,-1失败或不在结果集,-2提取行不存在)
BEGIN
PRINT @code
PRINT @name
SELECT * FROM dbo.zy_bill_item WHERE code=@code
FETCH NEXT FROM my_cursor INTO @code,@name
END
--4.关闭释放游标
CLOSE my_cursor
DEALLOCATE my_cursor
游标用途
一般复杂的存储过程,都会有游标的出现,他的用处主要有:
- 定位到结果集中的某一行。
- 对当前位置的数据进行读写。
- 可以对结果集中的数据单独操作,而不是整行执行相同的操作。
- 是面向集合的数据库管理系统和面向行业的程序设计之间的桥梁。