GeneroBDL_语法知识.pdf_第1页
GeneroBDL_语法知识.pdf_第2页
GeneroBDL_语法知识.pdf_第3页
GeneroBDL_语法知识.pdf_第4页
GeneroBDL_语法知识.pdf_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Genero BDL Genero BDL 语言,为法国的 FourJS( )公司于 2004 年所提出。其前身即为 INFORMIX-4GL 语言。 INFORMIX-4GL 语言属于第四代架构的语言,其优点在于构成程序的语法和英文近似,可以大幅减少 学习的时间,但仅能使用于 INFORMIX 数据库的控制上。 FourJS 则是取其优点,致力于扩张后端可连结的数据库种类,开发出 BDL 语言,使之可串接多种不同 形式的数据库,如 IBM DB2、INFORMIX、MySQL、ORACLE、PostgreSQL、SQL Server、Sybase ASA 等 2004 年,因应图型化接口已成为电脑作业的主流模式,推出了 Genero BDL 语言,此语言除承袭旧有 优点外,更添加一些新的特点: 切分为 Client、Server 架构(GDC 与 fgl) ,增进运行效率 以 XML Bsae 做为 Client 及 Server 端数据传递的架构 支持更多不同平台(OS)及数据库系统 可在运行阶段动态调整画面输出的格式(Layout Styles) 在部份新增的功能中引入基本的对象(Object)概念 Genero的核心架构图 在后端执行的操作系统平台上,无论选择 unix、linux、 windows 或 mac os 等,都可以在这些平台上 部署及执行开发出来的应用程序。 在数据库存取的部分,透过 odi(open database interface)的支持,可选择市面上常见且知名的数据 库软件作为资料存取的媒介,如:ibm informix 、oracle 或 microsoft sql server 等。而更为突出的是 odi 与后端数据库的连接的部分乃是采用 native driver 的方式,不同于一般 jdbc(or odbc)的方式, 从而提供了更有效率及可靠性的数据库存取机制。 在前端画面呈现的部分,以 aui(abstract user interface)为核心,该部分是以 xml 为基础作为描述 使用者接口的呈现方式。使开发出来的程序可同时在不同的前端装置如: windows、linux、mac os、 java 及 html 等上做呈现。 透过 aui 的机制,前端显示装置即使不同,程序与画面也不需要另外调整;通过这样的机制,程序人 员所开发出的应用程序可以在不需做任何调整的情况下,依照使用者所采用的前端装置自动有对应 的画面予以呈现。而且 aui 以 xml 为基础,在使用者接口达到在执行程序时,能够动态地改变画面 上任何组件的状态。如:隐藏或显示画面中某个字段等。 程序语言的核心以商业应用程序开发为导向,这是一个 object base 的程序语言,并同时提供了各种 便利的 api function, 如: xml utility function 等。 在与外界其它程序语言沟通的接口上, 提供了以 web services 为基础的技术机制,达到与采用其它程序语言开发出的应用程序之间完全整合的需求。 从整个系统环境建置来看, 易拓 erp 的应用可以建构一个 2-tier 到 n-tier 的系统架构,使用者可直 接联机到 application server 执行程序,也可通过再建置一台 web server 的方式,以 internet 联机方 式,透过 web 激活并执行应用程序。此外,在安全性的考虑上,也可通过架设防火墙的方式加强系 统环境的安全。 Genero BDL 在 Genero BDL 语言架构中,仍是将程序逻辑、与画面架构视为不同的控件目,因此采行分别撰写 的方式。一般通称一支一支的小程序(4GL)为 Module,称画面结构(PER)为 From,组合后可独 立运行的作业为 Program。 Program 可由许多的 Module 与 Form 构成。Module 使用的扩展名为4GL ,Form 使用的则为 PER ,因此以下以 4GL 与 PER 来代称 Module 与 FORM。 单一的 4GL 由一个或一个以上的 Function、Report 组成。 一个完整的 Program 中,必需指定一个特定 Function 作为运行入口(注) ,此特定的 Function 即为 Main 。完整的作业中只能存在单一的Main ,若有一个以上时,即会造成编译或连结的错误。 文件组成结构: MODULE 程序文件 *.4gl *.42m*.42r FORM 文件 *.per *.42f 其它格式 *.sch TIPTOP GP 1 模块代码须为三至四码英文组成 a为系统基本模块: Exampleaglapyaxr azz g为大陆版修改模块: Examplegglgpygxr c为客制模块: Examplecglcgglcpycgpy clib libsubqry三组系统函式除外 2 一般以四码英文三码数字组成,并以附加文件名来区分该程序的类别。程序的前三码为模块代码,第四 码为程序类别,第五至七码为作业代码。 SSSQ999 SSS 为模块代码,以小写字母表示 Q 为程序类别,其意义如下: ireportmsp queryc999 第一码多表示处理的阶段,如 0 表示参数设定,1 表示基本资料维护 第二码第三码为流水号 若程序中,包含了一个以上的副函数或子画面,则可以再加上第四码来表示归属于该主程序下的 附属数据。_C 附加区别码(非必须) : _c 表示友佳客制程序 _f 表示友高客制程序 _h 表示友华客制程序 _t 表示高松客制程序 _n 表示停车客制 _d 表示友达 岩田,电子设备尚未客制 Aimi100 为料件基本数据维护作业。Aim 为系统名称,i 为维护作业,100 为该作业代号。Aimi1001 表示附于程序 aimi100 的子档案。Aimr100_f 为友高客制的料件基本数据维护作业。 共享程序为在 TIPTOP GP 中可全系统通用的函数。 cl_xxxxxxx cl_表示该程序为共享程序 xxxxxxx 最少 1 个字符最多 17 个字符。 cl_err 显示错误信息. $top/lib $topcust/clibp_link s_ xxxxxxx s_表示一般用途子程序。 xxxxxxx 最少为 1 个字符,最多为 17 个字符。 s_tlf 处理库存异动记录 $top/sub $topcust/csubp_link q_ xxxxxxx q_表示一般查询子程序。 xxxxxxx 最少为 1 个字符,最多为 17 个字符。 q_ima 为料件数据查询 $top/qry $topcust/cqryp_link 3函数为程序中具有独立性质,能提供特殊功能的部分组成。 x x x x _ y y 程序代码简称 函数功能名 i 0 1 0 _ a 为 i 0 1 0 作业的新增函数 4 : 全局变量 g_xxxxxxx g_ima 为定义 aimi100 单头数据 record,在定义单头及单身数据 record 时,一般使用其在数据库中 的对应文档名。全局变量在$top/config/top.global 中也有定义,在编写程序时须避免使用与其相同 名称的变量,以免发生重名 : 区域性变量(局部变量) l_xxxxxxx 表示函数内部变量,在某函数中有效 : 传递变量 p_xxxxxxx 表示函数接收参数变量 : 屏幕变量 s_xxxxxxx s_表示该变量为屏幕变量 5 xxx_file(文件名称,数据库) xxx 以英文小写命名,_file 为固定字 ima_file xxx99 xxx 与上述相同,99 为流水码 上面两项内容需于 中注册方可使用。 存于U N I X 的外部名称(S c h F i l e s ): 1Difine Variable设置变量的数据形态,须。 DEFINE employee_no CHAR(10) DATABASE database_id DEFINE p_employee_no LIKE employee_file.employee_no CHAR 固定字符 Null VARCHAR 动态字符 Null STRING动态定义大小的字符串储存空间 Null DATE 日期 1899-12-31 DATETIME 日期时间 Null INTEGER 4 BYTE 整数 BYTE SMALLINT 2 BYTE 整数 BYTE FLOAT 8 BYTE 单精度浮点数 BYTE SMALLFLOAT 4 BYTE 双精度浮点数 BYTE DECIMAL(p,s) 高精度数值-precision 为所有数字个数(不含小数点), scale 为小数 点的位数,不可大于precision 的位数 Null MONEY 同 DECIMAL,但会在数值前面加上货币符号 Null BYTE 大量二进制数据(图片) Null TEXT 大量字符数据 Null Genero BDL 对于型别转换的要求较其它语言比较不算严谨,只要合理可转换的,系统均会自行判断进行转换。 STRING 为一特别的数据型态,具有基本的对象属性。(常用的属性如下表格所示) String METHOD() append( str STRING )RETURNING STRING 将传入字符串加到原来的 STRING 后。 equals( src STRING ) RETURNING INTEGER 判断原字符串与传入字符串是否相等。 equalsIgnoreCase( src STRING )RETURNING INTEGER 判断原字符串与传入字符串是否相等 (忽略大小写差异) 。 getCharAt( pos INTEGER )RETURNING STRING 抓取指定位置的字符。 getIndexOf( str STRING, spos INT)RETURNING INTEGER 从 INT 处开始寻找,判断是否含有传入字符串。 getLength( )RETURNING INTEGER 计算此字符串总长度。 subString( spos INT, epos INT )RETURNING STRING 切截出指定起点至终点的子字符串。 toLowerCase( )RETURNING STRING 将字符串转换为小写字。 toUpperCase( )RETURNING STRING 将字符串转换为大写字。 trim( )RETURNING STRING 切掉字符串头尾两侧的空格符。 trimLeft( )RETURNING STRING 切掉字符串头端的空格符。 trimRight( )RETURNING STRING 切掉字符串尾端的空格符。 2Records不同数据型态变量的组合。 MAIN DEFINE rec RECORD id INTEGER, name VARCHAR(100), birth DATE END RECORD END MAIN 此示范中,直接定义 这个 Records 中的 各个变量型态。 DATABASE example_database MAIN DEFINE cust01 RECORD LIKE customer.* DEFINE cust02 RECORD id LIKE customer.id, name LIKE , birth LIKE customer.birth, END RECORD END MAIN 3利用 LET 指令指定变量值。 3 INITIALIZE LIKE TO NULL DATABASE ds MAIN DEFINE cr RECORD LIKE customer.* INITIALIZE cr.cust_name TO NULL INITIALIZE cr.* LIKE customer.* END MAIN PRE-DEFINED Variable INT_FLAG:当设置DEFER INTERRUPT 时,系统即会在用户每次按下中断键时,将此变数 设置为TRUE,须要程序恢复回原值(FALSE)。 STATUS储存每次 SQL 的运行状态。 CONSTANTCONSTANT constant_id data_type = value CONSTANT c1 = “Drink“ STRING CONSTANT c2 = 4711 INTEGER CONSTANT c3 SMALLINT = 12000 INTEGER CONSTANT c4 CHAR(10) = “abc“ CHAR(10) 常数可以直接指定其值,可以不需指定其型态,若欲指定型态但又指定错误,系统会自行修 正为正确型态。 PRE-DEFINED Constant NULL即表示NULL。 TRUE表示布尔逻辑中的非零值,缺省为1,但不可视为1运算。 FALSE表示布尔逻辑中的零值,缺省为0,但不可视为0运算。 NOTFOUND:表示SQL 信息中的找不到notfound,缺省为100,但不可视为100运算。 DATABASE ds MAIN DEFINE c1, c2 CHAR(10) DEFINE c3 VARCHAR(10) LET c1 = “Genero“ LET c2 = c1 LET c3 = c1 END MAIN - c2 = Genero - c3 = Genero LET variable = expression DATABASE ds MAIN DEFINE c1, c2 CHAR(10) LET c1 = “Genero“ LET c2 = c1 END MAIN 若变量类型为 CHAR 和变量类型为 VARCHAR 时, 指定给予的值有差异。 4 空白 IF a IS NULL THEN 等于 IF a = 10 THEN 不等于 IF a != 10 THEN 小于 IF a = 10 THEN 指定值(用于 Let 内) LET a = b := 10 加法 LET a = a + b 减法 LET a = a - b 乘法 LET a = a * b 除法 LET a = a / b 次方 LET a = a * b 取余数 LET a = a MOD b Not 反向 IF NOT a = b THEN And 而且 IF a = b AND c = d THEN Or 或者 IF a = b OR c = d THEN TODAY 取出今天的日期 LET a = TODAY( ) CURRENT 回传现在的时间和日期 LET a = CURRENT DATE 转换为日期型态 LET a = DATE( “07/31/2005” ) MDY 组成日期类型 LET a = MDY( 07, 31, 2005 ) TIME 取出时间值 LET a = TIME ( CURRENT ) YEAR 取出年 LET a = YEAR( CURRENT ) MONTH 取出月 LET a = MONTH( CURRENT ) DAY 取出日 LET a = DAY( CURRENT ) WEEKDAY 回传今天是第几个工作天(星期) LET a = WEEKDAY(CURRENT) INFIELD 判断是否在某画面字段中 IF INFIELD(aaa01) THEN , 字符串连结(append) LET a = a, b | 字符串连结,但连结值有一个是NULL,结 果就会是NULL LET a = a | b start,end 从字符串中取出子字符串 【只能用CHAR、 VARCHAR】 LET a = a1,10 USING 针对数值或日期设置其打印的格 LET a = a USING “#” CLIPPED 消除尾部空白 LET a = a CLIPPED SPACES 输出空白字符串 LET a = 10 SPACES ASCII 指定以ASCII 码方式录入文字 LET a = ASCII 37 Module Main MAIN( )函式是程序运行的入口, 一个完整可运行的程序 必定仅含一个MAIN( )函式 MAIN DISPLAY “Hello, world!“ END MAIN DEFER 设置 此设置可定义程序是否要拦截当用户按下中断(interrupt)或离 开(quit)键时所送出的系统讯号。 语法: DEFER INTERRUPT | QUIT OPTIONS 设置 (此段设置可变 更系统缺省的选 项。) INPUT NO WRAP: 在离开最后一个录入格后,是否重新开始 NO WARP 表示不重新开始 FORM LINE: 画面开始显示的位置仅于 Console 模式有效 MESSAGE LINE: 信息显示的位置仅于 Console 模式有效 PROMPT LINE: 提示说明显示的位置仅于 Console 模式有效 Exceptions 设置 定义当遇到 SQL 错误时,系统要采取何种方式因应。此设置不限MAIN( )函式可设置,此设置在程 序中想改变因应方式时可再次指定,即可以新设置方式处理。 WHENEVER ANY ERROR CONTINUE | STOP | CALL function | GOTO label 一般 FUNCTION( ) 函式 运行某个特定功能的子函式,程序中可将某些功能独立编写为一 个个的子函式, 以供互相呼叫之用, 如此即可趋近模块化的目标。 同一支完整作业内的Function 名称不能相同。 MAIN CALL sayIt() END MAIN FUNCTION sayIt() DISPLAY “Hello, world!“ END FUNCTION 报表结构 REPORT( )函式 为函式的一种,专门用来设置报表打印格式 4GL 批注符号 1. 可以将某个范围做备注。 2. # 将某行做备注。 3. - 将某行做备注。 FUNCTION( ) CALL 运行指定的函 式(Function), 若有回传值,以 RETURNING 接 回。 CALL function ( parameter ,. ) RETURNING variable ,. 动态查询的回传值如果有多组则: let g_qryparam.default1= g_azb.azb01 let g_qryparam.default2= g_azb.azb02 let g_qryparam.default1= g_azb.azb03 returning g_azb.azb01 returning g_qryparam.multiret let g_qryparam.multiret_index = 1 RETURN 传回原呼叫函式所需的变量值, 并停止此子函式的运行。RETURN value ,. IF 依条件运行 程序 IF condition THEN statement . ELSE statement . END IF FOR 依 指 定 的 次 数 运 行 程序 FOR counter = start TO finish STEP value statement . END FOR CASE 运行符合条 件的特定程序 段 SLEEP 程序依指定秒数暂停。SLEEP seconds 注意:如果 seconds 0 或 seconds IS NULL,则程序不会停止。 WHILE运行 程序直到条件 式不成立为止 WHILE b-expression #条件不成立,跳出循环 statement . END WHILE CASE expression-1 WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE . END CASE CASE WHEN boolean-expression # statement | EXIT CASE . OTHERWISE statement | EXIT CASE . END CASE CONTINUE 重新运行循环 CONTINUE FOR | FOREACH | MENU | CONSTRUCT | INPUT |WHILE EXIT 离开上面的程序结构 EXIT CASE | FOR | MENU | CONSTRUCT | FOREACH | REPORT |DISPLAY | INPUT | WHILE WindowsForm Windows 与 Form 本身无法运行,必须透过 program 去启动它 Open Window OPEN WINDOW window-id AT line, column WITH FORM form-file | height ROWS, width COLUMNS ATTRIBUTES ( window-attributes ) window-id:定义这个window name 名称。 AT line, column:表示让画面开启的起始坐标,仅限于Console 上运行有效。 form-file:经过编译后的画面档档案名称(不含扩展名),之前可以指定放置路径。 height ROWS, width COLUMNS:实际画面档不存在时,可先指定画面占用行数及栏数, 其它部份待4GL 运行时再行动态设置。 ATTRIBUTES ( window-attributes ):可以加上属性设置。 通用属性:Text=String(将String显示在窗口标题列) Style=String(读取 String 的画面设置属性) Clear Clear field-list #清除指定字段变量的内容 CLEAR FORM CLEAR FORM window-id #清除当前所运行窗口内所有变量内容 Close Window CLOSE WINDOW window-id #画面用完后,可透过此指令将窗口关闭。 Current Window CURRENT WINDOW IS window-id #程序部份需要开很多窗口,且需切换不同窗口,则可以利用 CURRENT WINDOW。 Open Form OPEN FORM form-id FROM “file-name” (TIPTOP GP中多使用Window) form-id定义画面的代码,为一全域变量。 file-name画面档经过编译后的档案名称(不含扩展名),可以指定放置的相对或绝对路径。 Display Form Display FORM form-id form-id也称作form-name form-id 与 OPEN FORM中 的 form-id 要一致。 (要先有OPEN,才能有DISPLAY) Close Form Close FORM form-id #关闭form,释放资源 MENU MENU title ATTRIBUTE ( control-attributes ) BEFORE MENU COMMAND option comment HELP help-number COMMAND KEY ( key-name ) option comment HELP help-number COMMAND KEY ( key-name ) ON ACTION action-name ON IDLE idle-seconds END MENU 在一个 MENU 中,可以定义menu 的属性, STYLE 属性缺省default。 STYLE = string 定义 menu 型态,值可以为default, dialog or popup。 COMMENT = string 定义 menu show 出来的信息。 IMAGE = string 定义选单中的图示。 2. BEFORE MENU 可以不写,若有一些特别的控管 如隐藏某些menu功能或参数控管是否进入某menu 功 能时,可在BEFORE MENU来下一些menu-statemenu 来控管menu部份。如: MENU “BEFORE MENU TEST“ BEFORE MENU #菜单载入前的设置 HIDE OPTION “del“ #隐藏del 功能 #SHOW OPTION “del“#显示del 功能 : ON ACTION add CALL act_a() ON ACTION del : END MENU 3. MENU-OPTION包含COMMAND option /COMMAND key /ON ACTION /ON IDLE COMMAND option MENU功能名称及快捷键 在菜单上。 COMMAND keyMENU功能快捷键并在菜单上 4. ON ACTION 跟 COMMAND 指令功能一样,不 同是 COMMAND 可以重复定义COMMAND KEY, 运行时以最后定义为主, 但是ON ACTION 不能重复 定义。两者定义名称时都不分大小写。 5. ON IDLE 设置空闲时间。 例:(在等待时间到后 (ON IDLE 3 即表示等3 秒),系统会启动PROMPT。) MENU “ ON ACTION add CALL act_a() : ON IDLE 3 #闲置时间超过3 秒处理流程 PROMPT “IDLE 3 SECONDExit Menu?(Y/N) “ FOR l_chr IF l_chr=Y OR l_chr=y THEN EXIT PROGRAM ELSE CONTINUE MENU END IF END MENU DisplayInput 当用户在做新增、查询、更改、删除数据时,可用这两个指令以供用户和程序之间的交谈。 Display (用来显示程序变 量的值到画面的指 定字段上) 1:DISPLAY expression ,. TO field-list ,. ATTRIBUTES ( display-attribute ,. ) #变量名只要对应 PER 档 里定义的名称即可 2DISPLAY BY NAME variable | record.* ,. ATTRIBUTES ( display-attribute ,. ) #变量名要与真实的字段 名称相同 Input 使用Input指令 前, 必须先开启画 面格式档, 将画面 显示在屏幕上 1: (变量名称和字段名称必须相同) INPUT BY NAME variable | record.* ,. WITHOUT DEFAULTS ATTRIBUTE ( display-attribute | control-attribute ,. ) 当程序运行到 INPUT 指 令时,会将控制权交给用户, 让用户录入数据。 用户录入完字段的数据, 会将数据回传给程序中的变 量接收。 只要运行到 INPUT 的指 令, 程序会将每个字段 Default (默认) 为 NULL(空) 。 2 (变量名称和字段名称可以不同) INPUT variable | record.* ,. WITHOUT DEFAULTS FROM field-list ATTRIBUTE ( display-attribute | control-attribute ,. ) Input INPUT variable-list FROM field-list BEFORE INPUT #输入前 AFTER INPUT #完成所有输入时 BEFORE FIELD field-list #进入某栏位输入前 AFTER FIELD field-list #完成某栏位输入时 ON CHANGE field-list #字段值在修改时 ON ACTION action-name #设置功能 ON IDLE idle-seconds #设置空闲时间 NEXT FIELD field_name #将游标移到下一字段上 EXIT INPUT #跳出 INPUT 的叙述 END INPUT #结束INPUT Prompt : PROMPT question FOR CHARACTER variable ATTRIBUTE ( input-attributes ) ON ACTION action-name ON IDLE idle-seconds END PROMPT 若只有简单的问题要询问用户, 可考虑使用PROMPT 指令, 此指 令只需宣告并告知所需要询问的 问题,就可开出一个小窗口,对 用户询问并取回答案。 FOR CHAR若设置FOR CHAR,则系统只抓取用户打入系统的第一个字符 WITHOUT DEFAULTS 在 INPUT 指令中,我们有提到,当程序运行到INPUT 时,电脑会缺省字段为NULL,也就是字 段的数据值会清空。因此,若原先变量里已经放入数据库的值了,当跑到INPUT 状态时,这些变 量就变成NULL 的状态, 所以要保留原先的数据, INPUT 指令必须配合 WITHOUT DEFAULTS。 Cursor 在处理数据时,若只有单笔数据的选取,则可用单纯的 SQL 指令即可,若是要抓取多笔数据处理时, 就会因抓取的特性不同(例如:一次只抓一笔数据处理,完成后再抓次笔,如个人数据表 ;或一次全部 抓取,一起编辑,如个人门禁进出记录表等) ,而须使用不同的指标(CURSOR) 。与 Cursor 相关的指令 如下表的详细介绍: Construct (结构) CONSTRUCT char_variable ON column_list FROM field_list BEFORE CONSTRUCT AFTER CONSTRUCT BEFORE FIELD field-id AFTER FIELD field-id ON ACTION action-name ON IDLE idle-seconds END CONSTRUCT char_variable: 为接取用户录 入数据的字符串变量(建议以 STRING 格式变量接取) column_list: 为 对 应 到 表 格 (TABLE)的字段名称清单(逗号 隔开) field_list: 为画面(WINDOW 或是FORM) 上的字段代码清单 (逗 号隔开)若有增加控制区段(如: ON ACTION 等) ,则就要加上 END CONSTRUCT (变量名称和字段名称相同时可用的写法) CONSTRUCT BY NAME char_variable ON column_list Prepare (预处理) PREPARE statement-name FROM char_variable statement-name: 是为一个 PREPARE 完成后的替代代码(prepared-id) 运行 PREPARE 指令前须先组好 SELECT 叙述。 运行完 CONSTRUCT 后,系统只能得到一个SQL 字符串,并非为可运行的指令, 因此必须透过PREPARE 指令,将此SQL 字符串转换成可运行的SQL指令PREPARE 会将 字符串传入数据库检查语法的正确性,再回传予一个prepared-id 以供后续呼叫之用。 Free(释放) FREE statement-name (释放 Prepare 的记录) Scrolling Cursor DECLARE cursor_id SCROLL CURSOR WITH HOLD FOR sql statement OPEN cursor_id USING value FETCH first|last|previous|next| cursor_id INTO variable CLOSE cursor_id 一般运用在单档控制或查询类的程序,可以随机抓取数据,一次一笔,再处理完后可以选择往 前一比、往后一笔或往这个查询序列中的任何一笔数据移动的指针(CURSOR) 。 Non-Scrolling Cursor DECLARE cursor_id CURSOR WITH HOLD FOR sql statement FOREACH first|last|previous|next| cursor_id INTO variable END FOREACH 一般运用在双档控制程序或报表程序,抓取数据是依序(seguential)的方式,一次可以将合 条件要求的资料一笔接着一笔的抓出,直到资料全数抓完(或被强制终止)为止。 Declare (声明) DECLARE cursor_id SCROLL CURSOR FROM prepared_id | char_variable 或者 DECLARE cursor_id SCROLL CURSOR FOR select_statement DECLARE 后面可用FORSQL或用FROMprepared-id SQL 。 Open (打开) OPEN cursor_id 本指令可用 STATUS 来检视是否运行成功。 在后续要使用 cursor 时,之前要先将 cursor OPEN 起来。 此叙述仅决定符合的数据,并不是真正从数据库中撷取数据。 Fetch (获取) FETCH cursor_id INTO program_variable 必须先OPEN CURSOR , 最后必须CLOSE CURSOR FETCH 叙述则必须配合WHILE 循 环一起用。当宣告为 SCROLLING CURSOR 时,可以配合以下移动 Cursor 的指令: FETCH FIRST 将 cursor 指到符合条件资料的第一笔 FETCH PREVIOUS 将 cursor 指到 current row 的前一笔 FETCH NEXT 将 cursor 指到 current row 的下一笔 FETCH LAST 将 cursor 指到符合条件数据的最后一笔 FETCH ABSOLUTE 将 cursor 移动到指定的 row FET

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论