- 浏览: 280240 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
sunlin:
水文 其他erp就没这样的问题? 不能单方面拿sap说 ...
【转】揭秘SAP在华真相:天价收费与用户之灾 -
zjut_xiongfeng:
用当前日期所在月的第一天,比如2010-7-30的当前月第一天 ...
pb函数库之日期、时间函数 -
550627069:
你好!问下 在PB中显示当前日期的前一个月 应该怎么做?求教
pb函数库之日期、时间函数
提到游标这个词,人们想到的是在屏幕上一个闪动的方框,用以指示用户将要输入字符的位置。而在关系型数据库的SQL语言中,游标却有另外的含义,它是存放结果集的数据对象。 |
为什么要用到游标 |
在某些PowerBuilder应用程序的开发中,您可能根本用不到游标这样一个对象。因为在其它工具开发中很多需用游标实现的工作,在PowerBuilder中却已有DataWin-dow来代劳了。事实上,DataWindow不仅可以替代游标进行从后台数据库查询多条记录的复杂操作,而且还远不止这些。但是同DataWindow和DataStore相比,游标也有其自身的优点,比如系统资源占用少,操作灵活,可根据需要定义变量类型如全局、实例或局部类型和访问类型如私有或公共等。 |
游标的操作 |
使用游标有四种基本的步骤:声明游标、打开游标、提取数据、关闭游标。 |
声明游标 |
象使用其它类型的变量一样,使用一个游标之前,首先应当声明它。游标的声明包括两个部分:游标的名称;这个游标所用到的SQL语句。如要声明一个叫作Cus-tomerCursor的游标用以查询地址在北京的客户的姓名、帐号及其余额,您可以编写如下代码: |
DECLARE CustomerCursor CURSOR FOR |
SELECT acct_no,name,balance |
FROM customer |
WHERE province="北京"; |
在游标的声明中有一点值得注意的是,如同其它变量的声明一样,声明游标的这一段代码行是不执行的,您不能将debug时的断点设在这一代码行上,也不能用IF...END IF语句来声明两个同名的游标,如下列的代码就是错误的。 |
IF Is_prov="北京"THEN |
DECLARE CustomerCursor CURSOR FOR |
SELECT acct_no,name,balance |
FROM customer |
WHERE province="北京"; |
ELSE |
DECLARE CustomerCursor CURSOR FOR |
SELECT acct_no,name,balance |
FROM customer |
WHERE province〈〉"北京"; |
END IF |
打开游标 |
声明了游标后在作其它操作之前,必须打开它。打开游标是执行与其相关的一段SQL语句,例如打开上例声明的一个游标,我们只需键入: |
OPEN CustomerCursor; |
由于打开游标是对数据库进行一些SQL SELECT的操作,它将耗费一段时间,主要取决于您使用的系统性能和这条语句的复杂程度。如果执行的时间较长,可以考虑将屏幕上显示的鼠标改为hourglass。 |
提取数据 |
当用OPEN语句打开了游标并在数据库中执行了查询后,您不能立即利用在查询结果集中的数据。您必须用FETCH语句来取得数据。一条FETCH语句一次可以将一条记录放入程序员指定的变量中。事实上,FETCH语句是游标使用的核心。在DataWindow和DataStore中,执行了Retrieve()函数以后,查询的所有结果全部可以得到;而使用游标,我们只能逐条记录地得到查询结果。 |
已经声明并打开一个游标后,我们就可以将数据放入任意的变量中。在FETCH语句中您可以指定游标的名称和目标变量的名称。如下例: |
FETCH CustmerCur-sor |
INTO:ls_acct_no, |
:ls_name, |
:ll_balance; |
从语法上讲,上面所述的就是一条合法的取数据的语句,但是一般我们使用游标却还应当包括其它的部分。正如我们前面所谈到的,游标只能一次从后台数据库中取一条记录,而在多数情况下,我们所想要作的是在数据库中从第一条记录开始提取,一直到结束。所以我们一般要将游标提取数据的语句放在一个循环体内,直至将结果集中的全部数据提取后,跳出循环圈。通过检测SQLCA.SQL-CODE的值,可以得知最后一条FETCH语句是否成功。一般,当SQLCODE值为0时表明一切正常,100表示已经取到了结果集的末尾,而其它值均表明操作出了问题,这样我们可以编写以下的代码: |
lb_continue=True |
ll_total=0 |
DO WHILE lb_continue |
FETCH CustomerCur-sor |
INTO:ls_acct_no, |
:ls_name, |
:ll_balance; |
If sqlca.sqlcode=0 Then |
ll_total+=ll_balance |
Else |
lb_continue=False |
End If |
LOOP |
循环体的结构有多种,这里提到的是最常见的一种。也有的程序员喜爱将一条FETCH语句放在循环体的前面,循环体内再放置另外一条FETCH语句,并检测SQLCA.SQLCODE是否为100。但是这样做,维护时需同时修改两条FETCH语句,稍麻烦了些。 |
关闭游标 |
在游标操作的最后请不要忘记关闭游标,这是一个好的编程习惯,以使系统释放游标占用的资源。关闭游标的语句很简单: |
CLOSE CustomerCursor; |
使用Where子句子 |
我们可以动态地定义游标中的Where子句的参数,例如在本例中我们是直接定义了查询省份是北京的记录,但也许在应用中我们要使用一个下拉式列表框,由用户来选择要查询的省份,我们该怎样做呢? |
我们在前面曾经提到过,DECLARE语句的作用只是定义一个游标,在OPEN语句中这个游标才会真正地被执行。了解了这些,我们就可以很方便地实现这样的功能,在DECLARE的Where子句中加入变量作参数,如下所示: |
DECLARE CustomerCursor CURSOR FOR |
SELCECT acct_no,name,balance |
FROM customer |
WHERE province=:ls_province; |
∥定义ls_province的值 |
OPEN CustomerCursor; |
游标的类型 |
同其它变量一样,我们也可以定义游标的访问类型:全局、共享、实例或局部,游标变量的命名规范建议也同其它变量一样。 |
游标的高级技巧 |
尽管目前基于SQL语句的后台数据库所支持的语言都大致相当,但对游标的支持却有着一些差异,例如对滚动游标支持。所谓滚动游标,就是程序员可以指定游标向前后任意一个方向滚动。如在Informix中,您甚至还可以将游标滚向结果集开头或末尾,使用的语句分别是FETCH FIRST,FETCH LAST、FETCH PRIOR和FETCH NEXT。当程序员用FETCH语句,其缺省是指FETCH NEXT。由于滚动是在数据库后台实现的,所以滚动游标为用户编程提供了极大的方便。 |
对游标支持的另一个不同是可修改游标。上述游标的使用都是指只读游标,而象Oracle、Sybase等数据库却另外支持可作修改的游标。使用这样的数据库,您可以修改或删除当前游标所在的行。例如修改当前游标所在行的用户的余额,我们可以如下操作: |
UPDATE customer |
SET balance=1000 |
WHERE CURRENT of customerCursor; |
删除当前行的操作如下: |
DELETE FROM Customer |
WHERE CURRENT OF CustomerCursor; |
但是如果您当前使用的数据库是Sybase,您需要修改数据库的参数,将游标可修改的值定为1,才能执行上述操作。这一赋值在连接数据库的前后进行均可。 |
SQLCA.DBParm="Cursor Update=1" |
另外一个内容是动态游标,也就是说您可以运行过程中动态地形成游标的SELECT语句。这同在PowerBuilder中动态地使用嵌入式SQL一样,需要用到DynamicStagin-gArea等数据类型,这已超出了本节的范围。 |
发表评论
-
如何将COLUMN的显示风格在EDIT、DDDW、DDLB之间相互切换:
2010-08-19 08:45 1596//如何将COLUMN的显示风格在EDIT、DDDW、DDLB ... -
pb从数据窗口获得数据的方法总结
2010-08-19 08:40 1921通过PowerBuilder的数据窗 ... -
在PB中如何动态注册ACCESS的ODBC数据库连接
2010-08-18 09:28 2989在PB中如何动态注册ACCESS的ODBC数据库连接 //获 ... -
在PB中快速实现数据库树形结构
2010-08-18 08:47 1901树形结构在Windows环境中被普遍应用,它以简捷的界面深受用 ... -
datawindow的参考手册
2010-08-18 08:24 893http://www.docin.com/p-63792034 ... -
sap powerbuilder 接口
2010-08-10 13:40 1623//Declaration String ls_app_se ... -
权限设计的探讨
2010-08-06 16:13 1354但凡涉及多用户不同权限的网络或者单机程序,都会有权限管理的问题 ... -
数据管道的用法
2010-04-22 08:58 1470我们首先看看数据管道 ... -
使用PowerBuilder同时访问多个数据库
2010-04-21 16:00 1331某个客户应用可能需要在同一窗口同时访问两个服务器上的两个不同种 ... -
优化你的PowerBuilder程序
2010-04-21 15:50 1028一段程序,完成了所需要的功能固然重要,但是提高执行效率,提高代 ... -
Power Builder 中动态SQL语句的写法
2010-04-16 10:49 1576PowerBuilder是目前最流行的数据库开发工具之一。Po ... -
Datawindow每页显示固定行
2010-04-14 18:52 972使Datawindow每页显示固定行 ---- 第一步:增加 ... -
日期计算函数
2010-04-11 14:00 919Day() 功能得到日期型 ... -
最小化,最大化,正常化窗口
2010-04-01 10:46 933This statement minimizes the Da ... -
datawindow 技巧
2010-04-01 09:08 6129网上看了很多datawindow的技巧,找了很多的例子,发现网 ... -
PowerScript – 常用函数和语句 -文件操作
2010-04-01 08:51 1099文件操作在程序设计中是不可缺少的。可以用文件函数来打开一 ... -
数据安全检测
2010-03-30 18:39 896--------------of_buildselect ... -
sqlca.sqlcode的数值含义
2010-03-29 16:23 1704如果一个 SQL 语句发生了错误,那么 sqlca.sq ... -
pb函数库之日期、时间函数
2010-03-25 09:59 2745Day()功能得到日期型数据中的号数(1到31之间的整数值 ... -
MESSAGE传递的机制及实例
2010-03-23 09:19 710MESSAGE是PFC消息传递的一个全局变量,是一个通用的数据 ...
相关推荐
以下是关于PB游标的详细知识点: 1. **声明游标**: 声明游标时,需要定义游标的名称和关联的SQL查询语句。游标的声明并不执行,只是一种声明和准备。示例中,`DECLARE Student CURSOR FOR SELECT name, id, sex ...
PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 游标的使用.PB中 ...
以下是关于Pb调用存储过程以及存储过程创建的详细知识: 首先,`Pb调用存储过程`通常是通过Database窗口或者DataWindow对象来实现的。在Pb中,我们可以通过以下步骤调用存储过程: 1. **声明存储过程**:在Pb的...
### PB115使用体会——重点技术解析 #### 一、引言 随着技术的不断发展与更新迭代,软件开发工具也在不断进步。PowerBuilder(PB)作为一种常用的开发工具,其新版本PB11.5相较于之前的版本有了显著的改进与增强,...
3. **掌握游标编程方法**:学会如何在PB中使用游标来逐行处理数据库查询结果集,以便更灵活地控制数据的读取和处理过程。 #### 实验内容 1. **在数据库中创建学生表**:首先需要在SQL Server数据库中创建一个名为...
在PB VIP开发查询中,我们可能涉及到的技术包括:优化SQL查询语句以提高性能、使用DataWindow进行高效数据访问、利用PB的事件驱动编程模型来控制程序流程、以及集成外部代码库以增强功能。同时,PB的脚本语言PBL...
4. **脚本编写**:PB使用自己的脚本语言,覆盖了程序流程控制、错误处理、函数调用等各个方面。文档将深入讲解语法、变量、运算符、控制结构等基础知识,以及如何编写和调试脚本。 5. **数据库连接与操作**:PB提供...
综上所述,"计算机网络技术pb+sql"的主题涵盖了数据库设计、PB界面开发、SQL查询、游标使用以及事件驱动编程等多个方面,这些都是构建基于数据库的应用程序所必需的核心技能。通过这个过程,我们可以学习到如何在...
### PB程序反编译流程详解 #### 一、概述 PB(PowerBuilder)是一种用于开发企业级应用程序的软件开发工具,广泛应用于企业信息化建设中。当开发者需要对PB程序进行维护或更新时,通常需要通过反编译过程来获取源...
4. 游标for循环:Oracle提供了一种简化游标使用的语法,即`FOR`循环,可以自动处理游标的数据,简化代码。 总之,声明包含非原表字段的游标是数据库编程中一种常见的技巧,用于整合多表数据。理解如何声明、使用和...
【PB常用操作技巧】指的是PowerBuilder...以上就是PB中的一些基础操作和技巧,这些技能对于熟练使用PB进行应用程序开发至关重要。通过掌握这些技巧,开发者可以更高效地编写代码,处理数据,并提供更加用户友好的界面。
通过以上描述,我们可以看到 PB 开发中的一些关键点:SQL 语句的执行、动态游标的使用、数据窗口的交互、窗口事件处理以及数据库的连接与断开。尽管 PB 的使用可能不如当今的现代 Web 开发框架那么流行,但这些基础...
目 录 第1部分 API函数调用 实例1 使用动态链接库扩展PowerBuilder 实例2 任务状态区图标的创建 实例3 使用API 函数的磁盘卷标 ...实例63 游标的使用 实例64 动态创建数据窗口 实例65 数据窗口间的数据传递
在进行PB程序的反编译过程中,主要使用了以下几种工具: 1. **PBKiller**:用于打开PBD文件并导出其中的函数、窗口等元素。 2. **PowerBuilder 6.5**:用于编辑和编译PB程序。在本项目中,PB6.5主要用于导入反编译...
在处理大量图片数据时,需要注意性能优化,如使用游标处理,避免一次性加载所有图片到内存。另外,可以考虑分批读取和保存,以减少内存占用和提高程序响应速度。 总结,通过PowerBuilder连接Oracle数据库,我们可以...
SQL语句游标的使用 游标的含义及作用游标的含义及作用
### PB6.5开发笔记:标准SQL调用与循环调用 #### 一、概述 在PB(PowerBuilder)6.5中进行数据库操作时,经常需要用到SQL语句来完成数据查询、更新等任务。本文档将详细介绍如何在PB6.5中标准地调用SQL语句以及...
### 使用PB实现客户端程序的自动升级 在当前的IT领域,C/S(Client/Server,客户端/服务器)架构因其稳定性、安全性和高速运行的特点,在众多大型应用系统中占据着不可替代的地位,尤其在与B/S(Browser/Server,...
PB高级测试主要涉及PowerBuilder (PB) 应用程序中的高级测试技术和数据库操作。以下是针对题目内容的详细...这些语句使用游标`emp_curs`从雇员表中获取行,然后尝试在游标打开时执行另一条SQL语句,这可能会引发问题。