第 3章 PowerScript语言
3.1 语言基础
3.2 数据类型
3.3 声明的使用
3.4 运算符和表达式
3.5 函数和结构
3.6 PowerScript语句
3.7 SQL语句
3.8游标的使用
3.9 脚本的编写
3.10 程序举例
PB
?
Po
we
rS
cr
ipt















4GL












































式S
QL










使









使
















访








?
Po
we
rS
cr
ipt









的S
QL































































了P
ow
er
Bu
ild
er









菜单
语言基础
?3.1.1 断行、续行和注释
?3.1.2 标识符、空值和特殊字符
?3.1.3 保留字
?3.1.4 对象、属性、函数和事件的引用
方法
?3.1.5 代词
菜单
数据类型
?3.2.1 标准数据类型
?3.2.2 系统对象数据类型
?3.2.3 Any数据类型
?3.2.4 枚举类型
菜单
声明的使用
?3.3.1 声明变量
?3.3.2 声明常量
?3.3.3 声明数组
?3.3.4 声明外部函数
?3.3.5 作用域
菜单
运算符和表达式
?3.4.1 算术运算符
?3.4.2 关系运算符
?3.4.3 逻辑运算符
?3.4.4 连接运算符
?3.4.5 运算符的优先级
?3.4.6 表达式菜单
函数和结构
?3.5.1 函数概述
?3.5.2 定义新函数
?3.5.3 函数的修改、删除与使用
?3.5.4 结构概述
?3.5.5 定义新结构
?3.5.6 结构的修改、删除和使用
菜单
P O W E R S C R I P T 语句
? 3.6.1 赋值语句
? 3.6.2 IF … THEN 语句
? 3.6.3 CHOOSE CASE语句
? 3.6.4 FOR NEXT语句
? 3.6.5 DO…LOOP 语句
? 3.6.6 CONTINUE和 EXIT语句
? 3.6.7 GOTO语句
? 3.6.8 HALT语句
? 3.6.9 RETURN语句
? 3.6.10 CALL语句
? 3.6.11 CREATE语句
? 3.6.12 DESTROY语句
菜单
SQL语句
?3.7.1 CONNECT语句
?3.7.2 DISCONNECT语句
?3.7.3 COMMIT语句
?3.7.4 ROLLBACK语句
?3.7.5 SELECT语句
?3.7.6 INSERT语句
?3.7.7 UPDATE语句
?3.7.8 DELETE语句
菜单
游标的使用
?3.8.1 声明游标
?3.8.2 打开游标
?3.8.3 提取数据
?3.8.4 关闭游标
?3.8.5 使用 where子句
菜单





?
3.
9.
1






?
3.
9.
2




菜单
程序举例
【 例 3.1】 中文小大写金额转换函数的定
义与使用 。
【 例 3.2】 判断闰年。
看一看
看一看
菜单
【 例 3.1】
建立一个文件夹, 小大写金额, 。
在当前打开的工作空间中, 创建一个对象库 xdx.pbl,一个目标 xdx.pbt和一
个应用程序对象 xdx。
在主工具栏上单击 New按钮, 在弹出 New对话框中选择 PB Object选项卡,在其
中选择 Function,单击 OK按钮, 打开函数画板 。
在函数原型定义工作区定义函数名 f_xdx,返回值类型 String,参数 xxje、
参数类型 String,参数传递方式 Value。
在函数脚本编辑区编写函数的功 能代码,
接下来设计一个测试窗口对象, 命名为 w_xdx,窗口的标题设置为, test”,
窗口类型为, main!”。
窗口上放一个掩码编辑框 em_1,并设置它的, Mask”属性为, #########.00”
( 保证两位小数 ), 放置一个单行编辑框 sle_1和一个命令按钮 。
命令按钮的, text”属性设置为, 转换,, 选中其, Default”复选框, 对它
的, clicked”属性编写一行代码:
sle_1.text=f_xdx(em_1.text)
这样, 当单击此按钮或直接回车时, 通过自定义的全局函数 f_xdx()将掩码
编辑框 em_1的小写金额转换为中文大写金额, 在单行编辑框 sel_1中显示输
出 。
最后, 在应用程序对象 xdx的, open”事件中编写一行代码,open(w_xdx)
用以打开窗口 w_xdx。
菜单
【 例 3.2】
任意输入一个年份, 判断它是否为闰年 。 判断闰年的条件是:能被 4整除但不能被
100整除的是闰年 ( 如 1992) ;能被 4整除又能被 400整除的也是闰年 ( 如 2000) ;其
它为非闰年 ( 如 1900,1998,2002) 。
我们建立一个文件夹, 闰年, 。 在当前打开的工作空间中, 创建一个对象库
leapyear.pbl,一个目标 leapyear.pbt和一个应用程序对象 leapyear。
在主工具栏上单击 New按钮, 在弹出 New对话框中选择 PB Object选项卡,在其中选择
Window,单击 OK按钮, 打开窗口画板 。
在窗口画板中, 设计一个窗口对象, 命名为 w_main,窗口的标题设置为, 判断闰
年,, 窗口类型为, main!”。 窗口上放置一个单行编辑框 sle_1和一个命令按钮 。
命令按钮的, text”属性设置为, 判断,, 选中其, Default”复选框, 对它的
,clicked”属性编写如下代码:
integer year
year=integer(sle_1.text
if mod(year,4)=0 and mod(year,100)<>0 or mod(year,400)=0
then
MessageBox("测试结果 ",sle_1.text+"是闰年 。 ")
else
MessageBox("测试结果 ",sle_1.text+"不是闰年 。 ")
end if
这段代码是整个应用程序的核心, 它首先从单行编辑框 sle_1中取出用户输入的年份,
用 integer()函数将其转换为整型数据, 然后用 If语句判断该年份是否满足闰年的条件,
若满足输出, 是闰年,, 否则输出, 不是闰年, 。 输出用的是 MessageBox()函数,
它会弹出一个对话框, 标题为, 测试结果,, 第二个参数是显示的信息 。
最后, 在应用程序对象 xdx的, open”事件中编写一行代码,open(w_main)
用以打开窗口 w_main。
菜单
3.1.1 断行、续行和注释
通常情况下,PowerScript的一条语句书写
在一行上。但有时一条语句太长,阅读起来
不够方便,可以把一条语句书写在几行上,
用符号, &”作为续行标记。
注释有两种写法,
(1)以, //”开头, 其后书写注释内容, 常用于单
行注释 。 例如:
//这是一个单行注释
(2)以, /*”开头, 到, */”结尾的部分为注释,
便于多行注释 。
菜单
3.1.2标识符、空值和特殊字符
标识符是程序中用来代表变量, 标号, 函数, 窗口,
控件, 菜单, 对象等名称的符号 。 PowerBuilder
8.0中标识符 的命名规则如下:
(1)必须以 字母开头 。
(2)其余字符可以是字母, 数字和如下的特殊字符:短
横线, -”,下划线, _”,美元符号, $”,号码符号
,#”和百分符号, %”。
(3)最长 40个字符, 且中间不能插入空格 。
变量被赋予空值的途径有 两条,
(1)从数据库中读到空值 。
(2)使用 SetNull()函数将变量设置为空值 。
菜单
3.1.3保留字
保留字是 PowerBuilder内部使用的一
组单词,有着特殊的含义,不能再把它
们用做标识符。
菜单
3.1.4对象、属性、函数和事件的引用方法
PowerBuilder应用程序开发过程实际上就是各种对象的定义和使
用过程 。 所有对象都有名称, 并且通过名称相互区分 。 在
PowerScript中, 访问对象的属性, 函数和事件很简单, 就是 使
用圆点作为标记符, 具体访问对象属性的格式为,对象名,对象属

程序访问对象的函数与事件的格式为:
[objectname.] [type] [calltype] [when]
functionname([argumentlist])
objectname为对象名 。
type取值为 FUNCTION或 EVENT,用于指明访问函数还是事件,
如果省略表示函数 。
calltype用于指明 PowerBuilder查找函数的时机, 有效取值为:
STATIC( 默认值 ) 编译时查找函数, 若不存在, 产生编译错误,
DYNAMIC程序运行时查找函数, 若不存在, 产生运行错误 。
when用于指明函数或事件是立即执行还是当前程序段执行完毕后
执行, 取值为,TRIGGER( 默认值 ) 立即执行 。
POST当前程序段执行完毕后执行 。
functionname调用的函数或事件名 。
argumentlist参数表列 。
菜单
3.1.5 代词
PowerScript提供了四个代词,This,Parent,ParentWindow
和 Super。
1,This 代词 This代表窗口, 用户对象, 菜单, 应用对象或者控
件自身 。
2,Parent Parent可以在窗口的控件, 用户对象中的控件和菜单
的程序中使用, 表示父对象 。 当在窗口的控件脚本中使用
Parent的时候, Parent当前控件所在的窗口 。
3,ParentWindow 只 能在菜单的脚本当中使用, 它代表运行时
菜单所在的窗口 。
4,Super 在编写控件或者对象的子对象脚本时, 可以调用祖先
的脚本, 可以直接使用祖先对象的名称调用它们, 也可以使用
Super来引用直接双亲 。
菜单
3.2.1标准数据类型
与其它编程语言类似, PowerScript提
供了丰富的数据类型, 主要包括标准数
据类型, 系统对象数据类型, 任意数据
类型和枚举类型 。 PowerScript的标准
数据类型
菜单
3.2.2系统对象数据类型
菜单
在 PowerBuider应用中,可以使
用诸如窗口、菜单、命令按钮、
列表框和图表等对象,它们就是
系统对象。 每一种系统对象实际
上都是定义在 PowerBuilder内部
的一种数据类型。
3.2.3Any数据类型
PowerBuilder的 Any类型, 是一个灵活
的数据类型, 可以具有与所赋值相对应
的类型 。 Any类型的变量还可以包括 结
构, 对象和数组 。
菜单
3.2.4 枚举类型
枚举类型是 PowerScript语言赋值时使
用的一组常量 。 枚举类型通常用来设置
对象 ( 或控件 ) 的属性或是作为函数的
参数 。
枚举型数据以 感叹号 ( ! ) 结尾 。
菜单
3.3.1 声明变量
变量在程序运行过程中被赋值, 在执行各种运算和控制时其
值可以改变 。
数据类型 变量名 [=初值 ][,变量名 [=初值 ]...]
括号里的内容为可选项 。 其中, 数据类型为任何标准类型,
枚举类型, 在对象浏览器中出现的对象或者已经定义的用户
对象, 变量名为任何合法标识符 。
在声明变量时可以直接把常量或表达式的值赋给它, 但应注
意一点, 变量初始化是在编译时而不是运行时完成的 。 因此,
为变量赋初值时, 初值不能随状态而改变 。
可以在一个语句同时声明多个相同类型的变量, 变量之间用
逗号分隔 。
菜单
3.3.3 声明数组
数组是指有一定顺序关系的若干变量的
集合 。 组成数组的变量称为该数组的元
素 。
声明一个数组与声明变量类似, 但在标
识符后面要有方括号, 方括号内用来表
示数组的维数和每一维元素的个数 。
在使用数组时应注意一点:无论是动态
数组还是固定元素个数的数组, 使用时
一定 不要越界, 否则会带来编译错误 。
菜单
3.3.4声明外部函数
外部函数是指使用 PowerScript之外的语言编写的保存在动态链接库 ( DLL)
中的函数, 用户可以使用任何支持动态链接库的语言编写外部函数 。
在使用动态链接库中的外部函数之前, 用户必须 先声明 它 。 按照外部函数
的使用范围, 可以把它分为两种类型,Local和 Global型 。 Local在限定的
范围内可以使用, 而 Global型则在整个应用中都能被调用 。 声明外部函数的
语 法 格 式 为, [access] FUNCTION returndatatype
name([[REF]datatype1 arg1,...,
[REF]datatypen argn])LIBRARY "libname" ALIAS FOR "extname"
其中, access指明局部函数的使用范围, 可以使用 PUBLIC,PRIVATE和
PROTECTED三个关键字, PUBLIC声明该函数可以在应用程序的所有脚本
中 使 用, PRIVATE 表 示 该 函 数 只 能 在 脚 本 所 在 的 对 象 中 使 用,
PROTECTED允 许 在 该函数 在其 所在对 象及 其继承 对象中 被调用 。
returndatatype是返回值的数据类型 。 name是在 DLL中定义的函数名 。
REF说明它后面的参数是被引用传递的 。 datatype arg是参数类型和参数名 。
LIBRARY关键字和 libname指明了包含函数的动态链接库文件名 ( libname
中不要包含路径 ), 动态链接库所在的目录必须满足以下四种情况中的一种:
当前目录, windows目录, windows的 system子目录, dos的 path目录,
这样可以保证在应用程序运行时, 外部动态链接库能够被应用程序找到 。 如
果在 DLL或数据库中的函数名不能在 PowerScript脚本中引用, ALIAS
FOR "extname"可以建立 PowerScript和外部函数之间的联系 。
在声明外部函数时, 应当使函数参数与外部函数定义的参数类型相匹配 。
菜单
3.3.5作用域
变量的作用域也就是变量的有效范围 。 有 全局, 共享, 实例和
局部 四种 。
1,全局变量
全局 ( Global) 变量 可以在整个应用程序内被访问, 它存储
在应用程序对象中 。
2,共享变量
共享 ( Shared) 变量 在一个对象内定义, 可以在该对象内部
的任何地方被使用 。 同一个类的所有实例共享这种变量 。
3,实例变量
实例 ( Instance) 变量 是在一个对象内定义的, 可以在这个
对象内部的任何地方使用 。 实例变量是和 对象的应用实例 相关
联的, 而不是和对象相关联 。
4,局部变量
局部 ( Local) 变量就是在脚本内定义的变量 。
5,变量的优先级
四种变量的优先级 由高到低 依次为,局部变量 → 实例变量 → 全
局变量 → 共享变量 。
菜单
3.3.2 声明常量
PowerScript编辑器可以使用常量 。 常
量也有自己的作用域, 用户可以根据需要定
义任何标准类型的, 任何作用域的常量 。 声
明时, 需要在常量名称前面加上关键字
CONSTANT。
常量声明的语法格式为,
CONSTANT [access] datatype
constname=value
其中, access为存取权限, datatype为数据
类型, constname为常量名, value为常量
值 。
菜单
3.4.1 算术运算符
PowerScript支持的运算符可
分为四种类型:算术运算符,
关系运算符, 逻辑运算符和
连接运算符 。
菜单
3.4.2 关系运算符
关系运算符 用于比较两个操作数,
比较的结果为 TRUE,FALSE、
NULL三者之一。
菜单
3.4.3 逻辑运算符
逻辑运算符 用于构成其结果为 TRUE或
FALSE的逻辑表达式 。 逻辑表达式的
运算量为逻辑量, 可以是关系表达式,
也可以是其它型的逻辑量 。菜单
3.4.4 连接运算符
连接运算符 只有一个, 就是
符号, +”,用 于 把 两 个
String型或 Blob型变量的内
容连接在一起, 形成新的字
符串或 Blob型数据 。
菜单
3.4.5 运算符的优先级
在表达式中, 运算按运算符的特定次序
进行, 这种次序就是运算符的优先级 。
当然, 使用括号可以改变运算次序 。
菜单
3.4.6 表达式
?表达式是用运算符将运算量连接起来的
有意义的式子 。 PowrScript的表达式
分为字符表达式, 算术表达式, 关系表
达式和逻辑表达式 。
? 在计算表达式时, 如果存在多种数据
类型, PowerBuilder将把它们转换为
表达式中已有的级别最高的数据类型 。菜单
3.5.1 函数概述
?用户自定义函数是用 PowerScript语言编写的执行
特定处理的例程 。 在定义了一个自定义函数之后,
它将存储在 PowerBuilder的库文件中并可随时使用
此函数 。
用户自定义函数包括两类:
?1,全局函数
?全局函数 是与 PowerBuilder内嵌函数相对应的概念,
是不与任何对象关联的一个对象, 用来完成某项特
定的功能 。
?2,对象级函数
?对象级函数 定义在窗口, 菜单, 用户对象或应用程
序对象上, 是这些对象的一部分, 通常用在这些对
象的脚本中, 但同样可通过, 对象名,函数, 格式被
其他对象访问 。
菜单
3.5.2 定义新函数
菜单
1.定义全局函数
2.定义访问级别
3.定义返回值类型 4.命名函数
5.定义参数 6.编码
7.编译和保存函数
3.5.3 函数的修改、删除与使用
?对于已定义的全局函数, 可在工具栏上单击 Open
按钮, 在打开的 Open对话框中选择全局函数 。 而对
于对象级函数, 可打开包含函数的对象画板并从函
数列表视图中选择所要修改的函数 。
?访问级别和返回值类型可直接修改, 过程与定义
时一样 。
?在函数脚本编辑区中可以直接修改函数的功能代
码 。
?自定义函数与内嵌函数一样可用在事件的脚本或
其他自定义函数中, 使用方法与内嵌函数完全相同 。菜单
3.5.4 结构概述
? 结构是一个或多个相关变量的集合,
这些变量可以是相同的数据类型,也可
以是不同的数据类型。
? 全局结构不与应用中的任何对象关联,
可在应用软件的任何脚本中通过定义结
构实例来引用。
? 对象级结构与特定的对象关联,对象
可以是窗口、菜单、用户对象或应用程
序对象。
菜单
3.5.5 定义新结构
结构的定义是在 结构视图 中完成的,
涉及结构中的参数类型和参数名 。
?1,打开结构画板或视图
?2,命名结构
?3,定义组成结构的变量
?4,保存结构
菜单
3.5.6 结构的修改、删除和使用
?对于已定义的结构, 可对其进行修改 。
定义了一个结构的同时也定义了一个新的数
据类型 。 只要存储结构定义的库文件在应用
程序的搜索路径中, 用户就可在脚本和自定
义函数中使用此结构 。
在脚本中使用结构, 首先要定义结构类型的
变量, 然后引用结构类型变量中的变量 。 结
构中的变量与 PowerBuilder对象的属性相类
似, 因此引用结构中的变量可使用如下语法:
? structure.variable
菜单
3.6.1 赋值语句
? 赋值语句的格式是:
? variablename = expression
? 其中 variablename代表变量名 ( 包括
结构成员变量和对象的属性 ),
expression代表表达式 ( 常量和变量
属于表达式的特例 ), 它将表达式的值
赋给指定的变量 。菜单
3.6.2 IF … THEN 语句
? IF … THEN 语句是一个选择分支结构语句 。 它有单行和多行两种格式 。
? 单行 IF … THEN语句的一般格式为:
IF condition THEN action1 [ELSE action2]
其中 condition 是一个条件表达式, action1和 action2是一条语句 。 如果
condition结果为 TRUE,执行 action1语句, 否则执行 action2语句 。
? 多行 IF … THEN语句的一般格式为:
IF condition1 THEN
action1
[ELSEIF condition2 THEN
action2
… ]
[ELSE
action3]
END IF
? 其中 condition1和 condition2是条件表达式,action1,action2和 action3是
一条或者多条语句。
菜单
3.6.3 CHOOSE CASE语句
? CHOOSE CASE是一个多分支结构语句 。
? CHOOSE CASE语句的一般格式为:
CHOOSE CASE testexpression
CASE expressionlist
statement
[CASE expressionlist
statement
......]
[CASE ELSE
statement]
END CHOOSE
? 其中, testexpression代表测试表达式, 不同的测试值引发不同语句的执行 。
expressionlist代表判断表达式, 它有以下的几种形式:
? (1)用逗号分隔的数据 。
? (2)用 TO表示一个区间 。
? (3)用 IS代表测试值, 与关系运算符一起构成关系表达式 。
? (4)使用以上的三种形式的综合, 用逗号分隔 。
菜单
3.6.4 FOR NEXT语句
FOR...NEXT是一个计数循环语句 。
FOR...NEXT语句的一般格式为:
FOR varname = start to end [STEP increment]
statement
NEXT
其中, varname 代表循环变量, start和 end分别为 初值和终
值, increment为步长 。
在使用 FOR NEXT语句的时候请注意以下几点:
(1)步长可以是正值, 也可以是负值, 如果是正值,, 超过, 的
意思是, 大于,, 如果是负值,, 超过, 的意思是, 小于, 。
(2)步长的默认值是 1。 也就是说, 省略, STEP increment”部
分和使用, STEP 1”效果是一样的 。
(3)start和 end不能超过 varname数据类型的最大值,否则会造
成溢出。
菜单
3.6.5 DO…LOOP 语句
DO… LOOP是一个通用的循环语句 。
在 DO… LOOP语句中, DO表示循环开始, 它有四种形式:
1,DO UNTIL condition
statements
LOOP
其中, condition为循环条件, statements为循环体 。
DO UNTIL语句执行循环体的语句直到 UNTIL后面的条件表达式结果为 TRUE。 如果在第一次
条件表达式的值就为 TRUE,则循环体中的语句不会被执行 。
2,DO WHILE condition
statements
LOOP
DO WHILE语句在 WHILE后的表达式结果为 TRUE时, 执行循环体中的语句, 如果第一次对表
达式求值的结果即为 FALSE,则循环体中的语句不会被执行 。
3,DO
statements
LOOP UNTIL condition
LOOP UNTIL语句在 UNTIL后表达式结果为 FALSE时执行循环体中的语句, 直到表达式结果
为 TRUE时结束循环 。 循环体中的语句至少被执行一次 。
4,DO
statements
LOOP WHILE condition
LOOP WHILE语句当 WHILE后面的条件表达式的结果为 TRUE的时候, 执行循环体中的语句,
如果表达式计算结果为 FALSE,循环结束 。 循环体至少被执行一次 。
菜单
3.6.6 CONTINUE和 EXIT语句
在 DO… LOOP或者 FOR… NEXT语句的
循环体当中, 遇到 CONTINUE语句的时
候, 将不执行在 CONTINUE后面和循环
结束之前的语句, 开始新一轮循环 。
在 DO...LOOP或者 FOR...NEXT语句的
循环体当中,使用 EXIT语句可以跳出循
环,使循环提前结束。
菜单
3.6.8 HALT语句
HALT语句用于终止应用程序的运行 。
该语句的语法为:
HALT [CLOSE]
遇到不包含 CLOSE选项的 HALT语句
时, 应用程序立即终止 。 当包含
CLOSE的时候, 应用先执行 CLOSE事
件所对应的处理程序, 然后再终止应用
程序 。
菜单
3.6.9 RETURN语句
?RETURN语句用于从脚本中返回调用
程序 。 其语法格式为:
?RETURN [expression]
?其中, expression代表该脚本的返回
值 。
菜单
3.6.10 CALL语句
?CALL语句的语法格式为:
CALL ancestor [.control]::event
[(argument)]
?其中, ancestor 为 祖 先 对 象 名,
control为控件名, event和 argument
是要调用的事件及其参数列表 。
菜单
3.6.11 CREATE语句
CREATE语句有两种语法格式:
objectvariable = CREATE objecttype

objectvariable = CREATE USING
objecttypestring
其中,objectvariable是对象实例变量,用
来表示生成的对象实例,objecttype代表对
象类型,objecttypestring是要创建的对象
类型名称的字符串。
菜单
3.6.12 DESTROY语句
?DESTROY语句释放由 CREATE创建的
实例, 释放之后该对象实例不能再被引
用 。 DESTROY语句的语法格式为:
?DESTROY objname
?在应用程序结束时, 系统自动释放全部
对象实例 。 但在对象实例释放之前, 重
复使用 CREATE创建新的实例, 将导
致系统资源耗尽 。
菜单
3.7.1 CONNECT语句
?CONNECT语句的语法格式为:
?CONNECT [USING transactionobject];
?其中, transactionobject是事务对象, 它包
含数据库连接所需信息 。 方括号内的部分可
以省略, 省略时默认的事务对象为 SQLCA,
在对数据库进行连接之前, 必须设置必要的
事务对象属性 。
菜单
3.7.2 DISCONNECT语句
? DISCONNECT语句用来断开与数据库的连接 。
DISCONNECT的语法格式为:
? DISCONNECT [USING transactionobject];
? 其中, transactionobject是前面用 CONNECT语句
连接数据库的事务对象 。
菜单
3.7.3 COMMIT语句
?事务是数据库管理系统一项完整工作的逻辑单位 。 数据库管理
系统保证一个事务要么被完整地完成 ( 称为提交 ), 要么被彻
底地取消 ( 称为滚回 ) 。 应用程序可以通过 COMMIT和
ROLLBACK语句控制事务操作 。 需要注意的是, 事务和事务
对象是两个完全不同的概念 。
COMMIT语句的语法格式为:
COMMIT [USING transactionObject];
?其中, transactionObject 是 自 上 次 执 行 COMMIT,
ROLLBACK或 CONNECT操作以来的需要永久更新的数据库
操作的事物对象的名称 。 默认事务对象为 SQLCA。
菜单
3.7.4 ROLLBACK语句
? ROLLBACK为事务滚回语句, 它取消自上
一个 COMMIT, ROLLBACK 或者
CONNECT语句以来的所有数据库操作, 关
闭所有的游标和过程, 并开始一个新的事务 。
其语法格式为:
? ROLLBACK [USING transactionObject];
? 其中, transactionObject是事务对象名,
默认的事务对象为 SQLCA。
菜单
3.7.5 SELECT语句
? SELECT语句从数据库中检索一条记录, 如果找到多条满足条
件的记录, 则产生错误 ( 读取多条记录可用后面介绍的游标方
法 ) 。 SELECT语句的语法格式为:
SELECT fieldoftablelist
INTO variablelist
FROM tablelist
[WHERE criteria]
[USING transactionobject];
? 其中, fieldoftablelist是字段名列表, 多个字段时, 字段之间
用逗号分隔, 多个表时, 用, 表名,字段名, 区分不同表中的
同名字段 。 variablelist是变量列表, 每个变量前要加上一个冒
号 。 criteria 是检索条件, tablelist 是表名列表,
transactionobject是事务对象名 。
菜单
3.7.6 INSERT语句
?INSERT语句在数据库中插入一条记录 。 其
语法格式为:
INSERT INTO tablename
( fieldname[,...])
VALUES (valueoffield[,...])
[USING transactionobject];
?其中, tablename是表名, fieldname是列
名 。 valueoffield是列的赋值, 可以是常量,
也可以时变量 。
菜单
3.7.7 UPDATE语句
? UPDATE语句用来修改表中指定的数据, 其句法格
式为:
UPDATE tablename
SET fieldname = varname[,fieldname =
varname,..]
WHERE criteria
[USING transactionobject];
? 其中, tablename是表名, fieldname 是列名 。
varname是要设置的列值, 可以是常量或变量 。
criteria 是 条 件, 满 足 条 件 的 记 录 被 修 改 。
transactionobject 是 事 务 对 象 名, 默 认 的 是
SQLCA。
菜单
3.7.8 DELETE语句
?DELETE语句用来删除表中的数据 。 其语法
格式为:
DELETE FROM tablename
[WHERE criteria]
[USING transactionobject];
?其中, tablename是表名 。 criteria是删除的
条件, 满 足 条 件 的 记 录 被 删 除 。
transectionobject 是事务对象, 默 认 为
SQLCA。
菜单
3.
8.
1





使











使





































SQ
L


菜单
3.8.2 打开游标
声明了游标后在做其它操作之前, 必须
打开它 。 打开游标是执行与其相关的一
段 SQL语句 。
菜单
3.8.3 提取数据
用 FETCH 语 句 来 取 得数 据 。 一条
FETCH语句一次可以将一条记录放入
程序员指定的变量中 。 事实上,
FETCH语句是游标使用的核心 。
菜单
3.8.4 关闭游标
?关闭游标的语句很简单,
CLOSE cursorname;
?其中, cursorname是要关闭的游标名 。
菜单
?3.8.5 使用 where子句
?我们可以动态地定义游标中的 WHERE
子句的参数,
?同其它变量一样, 我们也可以定义游标
的访问类型,全局, 共享, 实例或局部,
游标变量的命名规范建议也同其它变量
一样 。
菜单
3.9.1打开脚本视图
不同对象, 打开视图的方法都是一致的, 有以下几
种:
?【 方法 1】 用菜单 。 打开选定的对象画板, 选择
,View|Script”菜单项, 或者右击对象, 在弹出的
快捷菜单中选, View|Script”项 。
?【 方法 2】 用工具按钮 。 打开选定的对象画板后, 单
击工具栏上的, Script”按钮 。
?【 方法 3】 双击 。 打开选定的对象画板后, 在需要编
写脚本的对象或控件上直接用鼠标双击 。
脚本视图的基本组成有,应用标题栏, 菜单栏, 通
用工具栏, 脚本编辑工具栏, 下拉列表框, 正文区
和状态栏 。 通过下拉列表, 可以选择要编码的对象,
控件以及事件 。
菜单
3.9.2 粘贴脚本
?1,粘贴函数 ( Paste Function)
?2,粘贴语句 ( Paste Statement)
?3,粘贴 SQL语句 ( Paste SQL)
?4,粘贴变量
包括粘贴全局变量 ( Paste Global),
粘贴共享变量 ( Paste Shared) 和粘贴
局部变量 ( Paste Instance) 。
?5,粘贴窗口, 参数和对象
菜单
3.6.7 GOTO语句
GOTO语句是无条件转 移语句 。 其语法
格式如下:
GOTO label
其中, label是语句的 标号 。
菜单