免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(一)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*.42rFORM文件 *.per*.42f其它格式 *.sch (三)TIPTOP GP命名原则1系统命名原则 模块代码须为三至四码英文组成 a为系统基本模块: Example:agl、apy、axr 、azz g为大陆版修改模块: Example:ggl、gpy、gxr c为客制模块: Example:cgl、cggl、cpy、cgpy 、clib lib、sub、qry三组系统函式除外2程序命名原则 程序编码一般以四码英文三码数字组成,并以附加文件名来区分该程序的类别。程序的前三码为模块代码,第四码为程序类别,第五至七码为作业代码。格式:SSSQ999说明:SSS为模块代码,以小写字母表示Q为程序类别,其意义如下:i维护作业,report报表作业,m目录选单,s参数设定,p批量处理query查询作业,c附加信息维护999为作业代码 第一码多表示处理的阶段,如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/clib(客制共享程序目录,使用时须在p_link中注册。) 一般子程序格式:s_ xxxxxxx 说明:s_表示一般用途子程序。 xxxxxxx最少为1个字符,最多为17个字符。举例:s_tlf处理库存异动记录目录:$top/sub $topcust/csub(客制共享程序目录,使用时须在p_link中注册。) 查询子程序格式:q_ xxxxxxx 说明:q_表示一般查询子程序。 xxxxxxx最少为1个字符,最多为17个字符。举例: q_ima为料件数据查询目录:$top/qry $topcust/cqry(客制共享程序目录,使用时须在p_link中注册。)3函数命名原则(函数为程序中具有独立性质,能提供特殊功能的部分组成。)格式:xxxx_yy 说明:程序代码简称_函数功能名举例:i010_a 为i010作业的新增函数4变量命名原则G_xxxxxx :全局变量格式:g_xxxxxxx举例:g_ima为定义aimi100单头数据record,在定义单头及单身数据record时,一般使用其在数据库中的对应文档名。全局变量在$top/config/top.global中也有定义,在编写程序时须避免使用与其相同名称的变量,以免发生重名 L_xxxxxx :区域性变量(局部变量)格式:l_xxxxxxx 说明:表示函数内部变量,在某函数中有效P_xxxxxx :传递变量格式:p_xxxxxxx 说明:表示函数接收参数变量S_xxxxxx :屏幕变量格式:s_xxxxxxx 说明:s_表示该变量为屏幕变量5文件命名原则(数据库设计)档案命名原则格式:xxx_file(文件名称,数据库) 说明:xxx以英文小写命名,_file为固定字举例:ima_file字段名称格式:xxx99 说明:xxx与上述相同,99为流水码上面两项内容需于 P-ZTA 中注册方可使用。存于UNIX的外部名称(Sch Files): c_xxx.sch(纯记录用,非可执行的sql档)(四)变量及运算1变量的定义(Difine Variable):设置变量的数据形态,须先定义后使用。 直接定义:DEFINE employee_no CHAR(10) 对应数据库字段定义:DATABASE database_idDEFINE p_employee_no LIKE employee_file.employee_no 变量的型态:字段名称说 明缺 省 值字符数据型态:CHAR固定字符NullVARCHAR动态字符NullSTRING(注)动态定义大小的字符串储存空间Null日期数据型态:DATE日期1899-12-31DATETIME日期时间Null数值数据型态:INTEGER4 BYTE 整数BYTESMALLINT2 BYTE 整数BYTEFLOAT8 BYTE 单精度浮点数BYTESMALLFLOAT4 BYTE 双精度浮点数BYTEDECIMAL(p,s)高精度数值-precision 为所有数字个数(不含小数点),scale 为小数点的位数,不可大于precision 的位数NullMONEY同DECIMAL,但会在数值前面加上货币符号Null大量数据型态:BYTE大量二进制数据(图片)NullTEXT大量字符数据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切掉字符串尾端的空格符。2变量的集合(Records):不同数据型态变量的组合。 直接定义:MAINDEFINE rec RECORDid INTEGER,name VARCHAR(100),birth DATEEND RECORDEND MAIN此示范中,直接定义 rec 这个Records 中的各个变量型态。 对应数据库字段定义:DATABASE example_databaseMAINDEFINE cust01 RECORD LIKE customer.*DEFINE cust02 RECORDid LIKE customer.id,name LIKE ,birth LIKE customer.birth,END RECORDEND MAIN3变量的设置:利用 LET 指令指定变量值。举例:DATABASE dsMAINDEFINE c1, c2 CHAR(10)DEFINE c3 VARCHAR(10)LET c1 = GeneroLET c2 = c1LET c3 = c1END MAIN结果:- c2 = Genero (含空格)- c3 = Genero(无空格)语法:LET variable = expression举例: DATABASE dsMAINDEFINE c1, c2 CHAR(10)LET c1 = GeneroLET c2 = c1END MAIN注:若变量类型为 CHAR 和变量类型为VARCHAR 时,指定给予的值有差异。3变量的初始化 一般变量的初始化:语法:INITIALIZE 变数串行 LIKE 字段串行 | TO NULL 例如:DATABASE dsMAINDEFINE cr RECORD LIKE customer.*INITIALIZE cr.cust_name TO NULLINITIALIZE cr.* LIKE customer.*END MAIN 预定义完成变数(PRE-DEFINED Variable)INT_FLAG:当设置DEFER INTERRUPT 时,系统即会在用户每次按下中断键时,将此变数设置为TRUE,须要程序恢复回原值(FALSE)。STATUS:储存每次SQL 的运行状态。 常数的定义(CONSTANT)语法: CONSTANT constant_id data_type = value例如:CONSTANT c1 = Drink 自行宣告为 STRINGCONSTANT c2 = 4711 自行宣告为 INTEGERCONSTANT c3 SMALLINT = 12000 自行修正为 INTEGERCONSTANT c4 CHAR(10) = abc 遵照设置为 CHAR(10)说明:常数可以直接指定其值,可以不需指定其型态,若欲指定型态但又指定错误,系统会自行修正为正确型态。 预定义完成常数(PRE-DEFINED Constant)NULL:即表示NULL。TRUE:表示布尔逻辑中的非零值,缺省为1,但不可视为1运算。FALSE:表示布尔逻辑中的零值,缺省为0,但不可视为0运算。NOTFOUND:表示SQL 信息中的找不到notfound,缺省为100,但不可视为100运算。4表达式表 达 式意 义示 范比较表达式:IS NULL空白IF a IS NULL THEN= 或 =等于IF a = 10 THEN!=不等于IF a != 10 THEN小于IF a 10 THEN=小于等于IF a 大于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 * bMod取余数LET a = a MOD b逻辑表达式:Not反向IF NOT a = b THENAnd而且IF a = b AND c = d THENOr或者IF a = b OR c = d THEN日期表达式:TODAY取出今天的日期LET a = TODAY( )CURRENT回传现在的时间和日期LET a = CURRENTDATE转换为日期型态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,结果就会是NULLLET a = a | bstart,end从字符串中取出子字符串【只能用CHAR、VARCHAR】LET a = a1,10USING针对数值或日期设置其打印的格LET a = a USING “#”CLIPPED消除尾部空白LET a = a CLIPPEDSPACES输出空白字符串LET a = 10 SPACESASCII指定以ASCII 码方式录入文字LET a = ASCII 37(五)程序流程控制关 键 字说 明(语法)示 范Module程序架构:Main函式MAIN( )函式是程序运行的入口,一个完整可运行的程序必定仅含一个MAIN( )函式MAINDISPLAY Hello, world!END MAINDEFER 设置此设置可定义程序是否要拦截当用户按下中断(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 名称不能相同。MAINCALL sayIt()END MAINFUNCTION 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.azb01let g_qryparam.default2= g_azb.azb02let g_qryparam.default1= g_azb.azb03returning g_azb.azb01 returning g_qryparam.multiret let g_qryparam.multiret_index = 1RETURN传回原呼叫函式所需的变量值,并停止此子函式的运行。语法:RETURN value ,. IF(依条件运行程序)IF condition THENstatement. ELSEstatement.END IFFOR(依指定的次数运行程序)FOR counter = start TO finish STEP value statement.END FORCASE(运行符合条件的特定程序段)语法二、CASEWHEN boolean-expression # statement | EXIT CASE . OTHERWISE statement | EXIT CASE .END CASE语法一、CASE expression-1WHEN expression-2 statement | EXIT CASE . OTHERWISE statement | EXIT CASE .END CASESLEEP程序依指定秒数暂停。语法:SLEEP seconds注意:如果seconds 0 或 seconds IS NULL,则程序不会停止。WHILE (运行程序直到条件式不成立为止)WHILE b-expression #条件不成立,跳出循环statement.END WHILECONTINUE重新运行循环 CONTINUE FOR | FOREACH | MENU | CONSTRUCT | INPUT |WHILE EXIT离开上面的程序结构EXIT CASE | FOR | MENU | CONSTRUCT | FOREACH | REPORT |DISPLAY | INPUT | WHILE (六)Windows与FormWindows与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 titleATTRIBUTE ( 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说明:1.在一个 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 TESTBEFORE MENU #菜单载入前的设置HIDE OPTION del #隐藏del 功能#SHOW OPTION del#显示del 功能:ON ACTION addCALL act_a()ON ACTION del:END MENU3. MENU-OPTION(包含COMMAND option /COMMAND key /ON ACTION /ON IDLE)COMMAND option:MENU功能名称及快捷键定义并显示在菜单上。COMMAND key:定义MENU功能快捷键并不显示在菜单上4. ON ACTION 跟 COMMAND 指令功能一样,不同是 COMMAND 可以重复定义COMMAND KEY,运行时以最后定义为主,但是ON ACTION 不能重复定义。两者定义名称时都不分大小写。5. ON IDLE:设置空闲时间。例:(在等待时间到后(ON IDLE 3 即表示等3 秒),系统会启动PROMPT。)MENU ON ACTION addCALL act_a():ON IDLE 3 #闲置时间超过3 秒处理流程PROMPT IDLE 3 SECOND,Exit Menu?(Y/N) FOR l_chrIF l_chr=Y OR l_chr=y THENEXIT PROGRAMELSECONTINUE MENUEND IFEND MENU(八)Display与Input当用户在做新增、查询、更改、删除数据时,可用这两个指令以供用户和程序之间的交谈。关 键 字语 法(说明)Display 语法(用来显示程序变量的值到画面的指定字段上)语法1:DISPLAY 表达式(expression) ,. TO field-list (画面档名称),.ATTRIBUTES(属性) ( display-attribute ,. ) #变量名只要对应PER档里定义的名称即可语法2:DISPLAY BY NAME variable | record.* ,.ATTRIBUTES ( display-attribute ,. ) #变量名要与真实的字段名称相同Input 语法(使用Input指令前,必须先开启画面格式档,将画面显示在屏幕上)语法 1:(变量名称和字段名称必须相同)INPUT BY NAME variable | record.* ,.WITHOUT DEFAULTSATTRIBUTE ( display-attribute | control-attribute ,. ) 当程序运行到 INPUT 指令时,会将控制权交给用户,让用户录入数据。用户录入完字段的数据,会将数据回传给程序中的变量接收。只要运行到 INPUT 的指令,程序会将每个字段Default(默认) 为NULL(空)。语法2:(变量名称和字段名称可以不同)INPUT variable | record.* ,.WITHOUT DEFAULTSFROM field-listATTRIBUTE ( display-attribute | control-attribute ,. ) Input 结构INPUT variable-list FROM field-listBEFORE 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 #结束INPUTPrompt语法:PROMPT question FOR CHARACTER variableATTRIBUTE ( input-attributes ) ON ACTION action-nameON IDLE idle-secondsEND PROMPT若只有简单的问题要询问用户,可考虑使用PROMPT 指令,此指令只需宣告并告知所需要询问的问题,就可开出一个小窗口,对用户询问并取回答案。FOR CHAR:若设置FOR CHAR,则系统只抓取用户打入系统的第一个字符WITHOUT DEFAULTS在 INPUT 指令中,我们有提到,当程序运行到INPUT 时,电脑会缺省字段为NULL,也就是字段的数据值会清空。因此,若原先变量里已经放入数据库的值了,当跑到INPUT 状态时,这些变量就变成NULL 的状态,所以要保留原先的数据,INPUT 指令必须配合 WITHOUT DEFAULTS。(九)Cursor(游标)在处理数据时,若只有单笔数据的选取,则可用单纯的SQL 指令即可,若是要抓取多笔数据处理时,就会因抓取的特性不同(例如:一次只抓一笔数据处理,完成后再抓次笔,如个人数据表;或一次全部抓取,一起编辑,如个人门禁进出记录表等),而须使用不同的指标(CURSOR)。与Cursor相关的指令如下表的详细介绍:指 令语 法(说明)Construct(结构)语法1:CONSTRUCT char_variable ON column_list FROM field_listBEFORE CONSTRUCTAFTER CONSTRUCTBEFORE FIELD field-idAFTER FIELD field-idON ACTION action-nameON IDLE idle-secondsEND CONSTRUCT说明:char_variable: 为接取用户录入数据的字符串变量(建议以STRING 格式变量接取)column_list: 为对应到表格(TABLE)的字段名称清单(逗号隔开)field_list: 为画面(WINDOW 或是FORM)上的字段代码清单(逗号隔开)若有增加控制区段(如:ON ACTION 等),则就要加上END CONSTRUCT语法2:(变量名称和字段名称相同时可用的写法)CONSTRUCT BY NAME char_variable ON column_listPrepare(预处理)语法: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 statementOPEN cursor_id USING valueFETCH first|last|previous|next| cursor_id INTO variableCLOSE cursor_id说明:一般运用在单档控制或查询类的程序,可以随机抓取数据,一次一笔,再处理完后可以选择往前一比、往后一笔或往这个查询序列中的任何一笔数据移动的指针(CURSOR)。Non-Scrolling Cursor语法:DECLARE cursor_id CURSOR WITH HOLD FOR sql statementFOREACH first|last|previous|next| cursor_id INTO variableEND FOREACH说明:一般运用在双档控制程序或报表程序,抓取数据是依序(seguential)的方式,一次可以将合条件要求的资料一笔接着一笔的抓出,直到资料全数抓完(或被强制终止)为止。Declare(声明)语法:DECLARE cursor_id SCROLL CURSOR FROM prepared_id | char_variable 或者DECLARE cursor_id SCROLL CURSOR FOR select_statement说明:DECLARE 后面可用FOR 接SQL 查询指令或用FROM 接prepared-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 移动到指定的rowFETCH RELAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拴紧带技术协议书
- 2025年REITs资产估值方法考核试卷
- 2025初级商业人像摄影师眼睛细节精修技巧考核试卷
- IBM杭州协议书酒店
- 总包融资协议书
- 差错检测协议书有哪些
- 2025年建筑行业调控政策考核试卷
- 2025年科技行业创新创业水平考试-基因检测技术应用考核试卷
- 2025年零售连锁行业智能零售连锁店发展策略研究报告及未来发展趋势预测
- 2025年留守儿童情感需求满足与心理支持指导资格考核试卷
- 银行物业服务承诺和质量保障措施
- 人工智能在智能水处理中的应用
- 2024-2025学年新乡市一中八年级上册期末考试数学试卷(含部分答案)
- 全国高校辅导员素质能力大赛试题(谈心谈话、案例分析)
- 人工智能安全:原理与实践 课件全套 李剑 第1-16章 人工智能安全概述- 代码漏洞检测原理与实践
- 完整版人教版小学3-6年级英语单词表,可直接打印
- 健康管理中心的建设与运营
- 三减三健课件
- 四川省达州市渠县第二中学2024-2025学年七年级上学期11月期中数学试题(无答案)
- 乡村振兴:人才是关键
- 2024年度钢结构施工总包协议模板
评论
0/150
提交评论