游标
来源:互联网 发布:外贸英语书籍推荐 知乎 编辑:程序博客网 时间:2024/05/14 12:03
游标是数据库内存里的一个位置,保存着最后一条sql语句。如果当前sql语句是个数据库查询,那么来自于查询的一行记录也保存在内存里,这一行记录是游标的当前值或当前行。内存里的这个区域是有特定名称的,可以在程序中访问。
SQLSERVER
--声明游标
--SQL语句填充游标
--打开游标
--FETCH检索提取的信息
--关闭游标
--删除游标
<span style="font-size:14px;">DECLARE @iNo INT DECLARE @sPatronID VARCHAR(20)DECLARE @sName VARCHAR(30)--声明游标DECLARE cMyCURSOR CURSOR for--SQL语句填充游标SELECT PartronID,Name FROM parton--打开游标open cMyCURSOR--FETCH检索提取的信息select @iNo = 0fetch next from cMyCURSOR into @sPatronID, @sNamewhile @@fetch_status =0beginselect @iNo = @iNo +1print cast(@iNo as char(10)) + @sPatronID +@sNamefetch next from cMyCURSOR into @sPatronID, @sNameend--对游标进行修改(更新或删除)--关闭游标close cMyCURSOR--删除游标deallocate cMyCURSOR</span>
MySQL :
CREATE PROCEDURE `test`.`new_procedure` ()BEGIN-- 需要定义接收游标数据的变量 DECLARE a CHAR(16); -- 游标 DECLARE cur CURSOR FOR SELECT i FROM test.t; -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; -- 将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop: LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样; FETCH cur INTO a; -- 声明结束的时候 IF done THEN LEAVE read_loop; END IF; -- 这里做你想做的循环的事件 INSERT INTO test.t VALUES (a); END LOOP; -- 关闭游标 CLOSE cur;END
这里有一个比较坑的地方,注意,变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!
另外 :
如果没有则插入数据,如果有则更新的方法:
insert into `test` values (a,b) ON DUPLICATE KEY UPDATE `a`=c;
0 0
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- 游标
- Android内存管理之道
- Unity buildingsetting
- Android 动画显示文字与bitmap的BadgeView
- UIStoryboard的使用
- Java自定义类加载器实战
- 游标
- 虚拟机安装VMware Tools
- 软件设计师选择题真题知识点归纳
- java SE复习笔记1
- {welcome to JS} 无干扰脚本编程
- [MFC]OnPaint双缓冲绘图
- SD卡相关知识总结
- IOS 积累代码之一
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法