当前位置: 首页 > 编程日记 > 正文

DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)

学习根柢根底观观点
developerWorks








操作游标

游标措置概述

在本节中,您将更进一步看到若安在嵌入式 SQL 使用次第中运用游标。异常,根柢根底的步骤照旧是声明、翻开、获取、更新/删除(可选)和封闭。

为了赞助看法游标的观观点,假定 DB2 构建一个了局表来寄存经过议定 SELECT 语句检索到的全数行。游标经过议定标识或指向表中的当前行,使使用次第可以会见了局表中的行。当运用游标时,使用次第可以继续地从了局表中检索每一行,直到碰到 end-of-data 条件(也即是 NOT FOUND 条件、SQLCODE 100SQLSTATE 02000)。取决于满足搜刮条件的行的数目,尝试 SELECT 语句失失落的了局集概略包括 0 行、1 行或更多的行。

在嵌入式 SQL 中声明游标

DECLARE CURSOR 语句的语法很是简朴。上面是静态 SQL 的一个例子:

DECLARE C1 CURSOR FOR SELECT * FROM STAFF


这条语句的运用概略有点令人隐晦,因为这条语句不是可尝试的。换句话说,这条语句是在嵌入式使用次第的预备阶段措置的,在次第尝试时代,当碰到 DECLARE 语句时,不会发生任何事件。全数事情都是在游标翻开后完成的。专心的要求即是,在源文件中,DECLARE CURSOR 语句要出现在 OPEN 语句之前。而在异常的 C 函数中,乃至不需求放入如许的语句。在游标声明时地点的源文件中,每个游标的称呼必需是专心的。

假设运用静态 SQL,那么 DECLARE CURSOR 语句会有有所不同。这里不再运用 SELECT 语句的语法,而是运用一个语句名。这个语句名必需与预备相关的 SELECT 语句时指定的称呼相婚配。比方:

EXEC SQL PREPARE STMT1 FROM :STRINGSTMT;
EXEC SQL DECLARE C3 CURSOR FOR STMT1;







回页首



在嵌入式 SQL 中翻开游标

经过议定翻开一个游标,可以预备究诘了局会合的行,以供次第运用。open 利用还使游标的职位处所处于第一个了局行之前,不外只要尝试 fetch 下令时,才气会见那一行。

每每,open 利用将占去究诘尝试进程中的年夜部分时间,尤其是在有 ORDER BYGROUP BY 子句的环境下就更是云云。

OPEN 语句的语法很是简朴。要翻开一个名为 c0 的游标,可运用以下语句:

OPEN C0







回页首



在嵌入式 SQL 中获取游标

对游标尝试 fetch 将招致了局会合的下一行变成对次第可用,每每是将了局集各列中的值放入到宿主变量中。了局会合的第 n 列的值被放入 fetch 语句中的第 n 个宿主变量中。

比方,假设为 Select name, dept, id from staff 声明一个游标 c0,那么语句 Fetch c0 into :hv1, :hv2, :hv3 将把 name 列的值放入 hv1,把 dept 列的值放入 hv2,把 id 列的值放入 hv3

假设了局集列可觉无暇,那么应该再运用一个宿主标识符(null 指示符),DB2 将把一个负值存储在谁人变量中,以暗示前去的是一个 null 值。比方,将之前的例子改为 Fetch c0 into :hv1, :hv2 :hv2ind, :hv3,如许次第就可以晓得员工的部分能否为 null。

每每,会将 fetch 语句放在一个次第轮回中,该轮回直到 SQLCODE 为 100 时才终了。此时,了局会合全数的行都已被获取。





回页首



用游标更新和删除行

如前所述,可以对游标所指向的行进行 positioned 更新或删除。在更新或删除之前,必需尝试一条 fetch 语句,并且前去的 SQLCODE 不克不及为 100(或一个错误)。了局会合的每一行都可以以这种体例进行措置。上面是一个例子:

EXEC SQL DECLARE CURSOR C0 FOR SELECT NAME, SALARY FROM STAFF FOR UPDATE OF DEPT;	
EXEC SQL FETCH C0 INTO :HVNAME, :HVSAL;
/* THERE MIGHT BE PROGRAM LOGIC HERE TO CHECK THE EMPLOYEE NAME AND SALARY */
/* AND ONLY EXECUTE THE UPDATE IF SOME CRITERIA APPLY                      */
EXEC SQL UPDATE STAFF SET DEPT = :NEWDEPT WHERE CURRENT OF C0;	


该代码从 STAFF 表中检索雇员信息,并批准更新雇员的部分。DECLARE CURSOR 语句提供究诘,其中列出 namesalary 列作为被检索的列,并指出某些行中的 dept 列可以更新。FETCH 语句将雇员和薪水值放入次第变量中。UPDATE 语句用于将之前获取的行中 dept 列的值更新为次第变量 newdept 中的值。

固然这里没有浮现,但每每要运用次第逻辑控制轮回,使轮回在达到了局集的最初时终了,并且只更新某些行。





回页首



封闭游标

封闭游标可以释放游标的内部存储,并使游标不再可用。封闭游标的语法很是简朴:

CLOSE C0


默许环境下,封闭一个游标并不会释放它所持有的锁。要释放锁,还需添加 WITH RELEASE 子句:

CLOSE C0 WITH RELEASE


这使得 DB2 检讨检讨释放全数的读锁。可是,DB2 将保存用于更新行的锁,并且概略需求为其他利用或交互保存一些读锁。

当游标处于翻开形态时,可以在任何时分封闭它。也即是说,在封闭游标前,不需求获取整个了局集。游标封闭后,还可以再次翻开,就像之前没有被运用过一样。




版权声明: 原创作品,批准转载,转载时请务必以超链接体式格式标明文章 原始理由 、作者信息和本声明。否则将清查轨则责任。

转载于:https://www.cnblogs.com/zgqjymx/archive/2011/03/06/1972868.html

相关文章:

判断字符串有无汉字

判断字符串是否全为汉字 1 String str1 "java判断是否为汉字" 2 String str2 "全为汉字" 3 String reg "[\\u4e00-\\u9fa5]" 4 boolean result1 str1.matches(reg)//false 5 boolean result2 str2.matches(reg)//true 提取字符串中…

获取指定字符的宽度

https://www.cnblogs.com/gaodu2003/archive/2009/06/12/1502242.html 方法一:var CharX, CharY: Integer;with Canvas do begin Font.Name : 宋体; Size : 9; CharX : TextExtent(字符串).cx; //字符串宽度,单位为像素 CharY : TextExtent(字符…

选课微信小程序开发 java

1.使用技术 javaspringbootmysqlhibernate微信小程序 2.功能介绍 后台管理 学生管理课程管理类型管理选课管理操作中心管理员中心导入导出学生微信小程序端 学生端 查看课程选课查看选课课程表个人中心管理员 查看课程新增课程用户管理课程类型管理管理员中心 3.系统功能展示…

危险进程大集合咯!(吐血推荐)

一般电脑中都有20-33个进程在后台运行着。有的占用了太多的系统资源,造成机器运行缓慢。更为不幸的是,一些进程是间谍软件和***,如此你的隐私和机器的控制权会被***所掌控。 不安全风险进程A 180ax.exe 是注册为TROJ.ISTZONE.H的下载器。这个…

老王Python-进阶篇4-异常处理1.3(周末习题)

一 编写with操作类Fileinfo(),定义__enter__和__exit__方法。完成功能: 1.1 在__enter__方法里打开Fileinfo(filename),并且返回filename对应的内容。如果文件不存在等情况,需要捕获异常。 1.2 在__enter__方法里记录文件打开的当…

Springboot 日志管理模块编写记录

/**配置类 **/Component Order(value1) public class MyApplicationRunner implements ApplicationRunner{ /*private static final Logger logger LoggerFactory.getLogger(MyApplicationRunner.class);Autowiredprivate MemoryService memoryService; Overridepublic void r…

IEs 4 Linux 新版支撑 IE 7

Toy Posted in AppsIEs 4 Linux 可以让在 Linux 上安插 IE 变成一件异常俭省和高兴的事。昨天发布的 IEs 4 Linux 2.1 beta2 版末尾支撑安插 IE 7 了。不过,需求使用 –beta-install-ie7 的下令行选项来激活。据作者称,在 Linux 安插的 IE 7,…

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则

h3c 3600 acl 配置 滤源IP是网关的ARP报文的ACL规则 悬赏分:100 - 解决时间:2009-3-8 14:30 星号之间是我在网上查到的华为交换机的配置方法: ************************************************ 全局配置ACL禁止所有源IP是网关的ARP报文 acl…

useradd与adduser的区别

useradd与adduser都是创建新的用户 在CentOs下useradd与adduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。 注:有朋友在博客园上回复我说 centos adduser 不创建用户home目录…

入门linux

作者:opmetic 出自: http://www.linuxdiyf.com说到入门linux ,仍是在大二的时辰,由于插手了黉舍的一个比赛举动,是在linux下的一个顺序匹敌,以是在自己的机子上装了一个RedHat9。厥后风闻它没有更新版本了,接着黉舍检…

springboot之异步调用@Async

引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.…

js将字符串作为函数名调用函数

需求&#xff1a;获取JSON对象的函数名称&#xff0c;并执行该函数。 解决&#xff1a;用eval函数&#xff0c;字符串转换为命令行执行都可以通过eval函数。 计算 JavaScript 字符串&#xff0c;并把它作为脚本代码来执行。 function loadForm(itemCode){for(var i0;i<ITEM…

2010网络营销-电子商务厦门峰会即将开幕

曾几何时&#xff0c;安踏、361度等福建晋江企业通过在央视大规模投放广告使企业的知名度得到迅速提升&#xff0c;产品销量也节节攀升。如今&#xff0c;大批福建企业又把营销的战场转向了互联网&#xff0c;如何在互联网这个营销新战场续写辉煌成了众多福建企业当前最关心的问…

百度前端技术学院js任务三

任务地址&#xff1a;http://ife.baidu.com/course/detail/id/98 代码&#xff1a; 1 <!DOCTYPE>2 <html>3 <head>4 <meta charset"utf-8">5 <title>IFE JavaScript Task 01</title>6 </head>7 <body>8…

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

项目介绍&#xff1a; Hangfire&#xff1a;是一个开源的job调度系统,支持分布式JOB&#xff01;&#xff01; Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响&#xff01; 该组件已被Hangfire官方采纳&#…

小手段:开启 GNOME 的窗口分组效果

Toy Posted in Tips用过 Windows XP 的伴侣除夜要都晓得它有一项分组雷同义务栏按钮的效果&#xff0c;该效果主动将同类窗口的义务按钮折叠为一个单独的按钮&#xff0c;从而无效处置义务栏的窗口拥堵后果。其实&#xff0c;在 Linux 的 GNOME 桌面情况中也有雷同的效果──窗…

MySQL设值自动修改时间

ALTER TABLE form_ylqx ADD update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改时间

[原]不祥的CPU——Alpha

这几天都在捣鼓 Sun Fire V890 小型机&#xff0c;小型机可不像PC服务器那样“不一样的品牌&#xff0c;一样的芯”&#xff0c;不同的品牌的小型机最大的不同当数CPU和OS了&#xff0c;IBM小型机CPU是Power而OS是AIX&#xff0c;HP小型机的CPU是Intel的Itanium而OS是HP-UX&…

Leetcode 764. Largest Plus Sign

思路&#xff1a;动态规划。对于第i行第j列的元素grid[i][j]表示的是这个元素的plus sign的等级&#xff0c;初始化不在mines中的元素对应的grid值为较大值&#xff08;只要大于N/2即可&#xff09;&#xff0c;在mines中的元素对应的grid值为0。不在mines中的元素&#xff0c;…

吴裕雄--天生自然 JAVASCRIPT开发学习:(String) 对象

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><script> var carname1"Volvo XC60"; var carname2Volvo XC60; var answer1It\s al…

校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发

1、 微信小程序前台展示 2 、 使用到的技术框架 Springbootmavenmybatis网易云相关API 3、 后台展示 项目地址&#xff1a; 项目地址

Tile Racer — 3D 赛车游戏

Toy Posted in Tile Racer 是一款可免用度于 Linux 及 Windows 平台的 3D 赛车游戏。它不只具有十分逼真的效果&#xff0c;并且包罗用来创设新 Maps 的赛道编辑器。玩家可置身于游戏之中足够觉获得赛车的快乐喜爱。Tile Racer 此后最新版本为 0.6&#xff0c;你可以从这里下载…

如何找寻最适合的WEB应用安全解决方案(视频)

51CTO最近举办了一个“拯救网站运维经理赵明”的活动&#xff0c;活动主要讲了一个网站运维经理由于网站被黑而面临失业的故事。其中急需解决的问题&#xff0c;就是如何保护我们的网站。Web应用安全该如何做&#xff1f;怎么才能找到最佳方案&#xff1f;我们就这一主题来采访…

docker 笔记 (6)搭建本地registry

转&#xff1a;http://blog.csdn.net/felix_yujing/article/details/51564739 新版 registry v2对镜像存储格式进行了重新设计&#xff0c;并且和旧版还不兼容。registry v2是由go语言开发&#xff0c;docker从1.6版本开始支持registry v2&#xff0c;之前python开发的老版regi…

2019攻防世界web新手区

robots 看了题目描述&#xff0c;发现与robots协议有关&#xff0c;过完去百度robots协议。发现了robots.txt&#xff0c;然后去构造url访问这个文件 http://111.198.29.45:42287/robots.txt 得到提示&#xff1a;Disallow: f1ag_1s_h3re.php&#xff0c;再次构造url&#xff0…

SSM实现网上商城 有聊天功能

1.项目介绍 实现一个网上商城&#xff0c;商品信息展示&#xff0c;购物车&#xff0c;订单管理&#xff0c;个人中心&#xff0c;商品评价&#xff0c;商品搜索&#xff0c;地址管理&#xff0c;聊天&#xff0c;后台管理&#xff08;商品增删改查&#xff09;&#xff0c;分类…

as3中TextFormat类的使用

在AS3中对TextField进行格式化时可以有三种方法&#xff1a;html标签控制格式css使用TextFormathtml比较方便&#xff0c;但很有限&#xff0c;CSS可以外置维护比较容易&#xff0c;但缺少变化&#xff0c;TextFormat可以复杂多变&#xff0c;只是写起来比较麻烦&#xff0c;并…

pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。

渣渣用法&#xff0c;请等待我心情好的时候更新。 1.第一个例子 1.1 先看mainwindow.py from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(640, 320…

linux secureCRT 显示中文乱码

安装的时候&#xff0c;只安装了英文&#xff0c;没有安装中文&#xff0c;所以只有en_US.UTF-8.因为linux本身就支持多语言&#xff0c;所以我们只需要在光盘 上找到&#xff12;个中文支持字体包安装上即可.这两个字体文件是存放在第四张光盘上的Servers目录下: fonts-chines…

PicGo 配置Gitee 图床

目录 1.下载安装picGo 2.打开picGo详情页面 3.创建gitee图床库 ​4. 配置picGo 5.获取gitee token信息 6.与typora搭配使用 1.下载安装picGo 百度picgo csdn下载地址:https://download.csdn.net/download/huyande123/12582917 2.打开picGo详情页面 3.创建gitee图床库 …