INFORMIX -4GL新手进阶整理
INFORMIX -4GL 教程 的 入门 教材 数据库1-12
访问www.获erp取d免ow费nE.RcoPm文档及软件!
INFORMIX-4GL教程 COLUMN 38, r_b + s_b USING "###,###", COLUMN 46, r_m + s_m USING "###,###", COLUMN 54, r_s + s_s USING "###,###" PRINT COLUMN 05,"======================================"
FOREACH p_curs INTO p_person.* ... END FOREACH
12-4 執行報表
<語法格式> START REPORT report_name begin loop OUTPUT TO REPORT report_name(variable_list) end loop FINISH REPORT report_name
END REPORT
若使用 ORDER BY 則所欲排列的變數必須出現在 REPORT 的argument_list中。
12-3 報表資料之選擇
欲得到報表中所須之資料,必須使用 SELECT 敘述配合 cursor 和程式迴圈來選取報表中所須之資料。 §例:
DEFINE query_1 CHAR(500) DEFINE query_stat CHAR(500)
§例: DEFINE prt_file CHAR(14) LET prt_file = "??????.report"
informix入门基础学习教程
informix入门基础学习教程Informix是一个关系型数据库管理系统(RDBMS),是IBM公司开发的一种数据库管理系统。
它具有高效、可靠、安全的特点,被广泛应用于企业级应用程序中。
本文将介绍Informix的基础知识和学习教程。
一、Informix的概述Informix是一种面向企业级应用的数据库管理系统,它提供了高性能、可扩展、可靠的数据存储和处理能力。
Informix支持多种操作系统平台,包括Windows、Linux、Unix等。
它的特点包括事务处理、并发控制、数据安全等。
二、安装和配置Informix2. 配置Informix服务器,设置数据库存储路径、内存大小等参数。
3.创建数据库实例,设置数据库名称、用户名和密码等信息。
三、Informix的基本概念1. 数据库:Informix中的数据库是一组相关表的集合,用于存储和管理数据。
2.表:表是数据库中的基本组成单元,用于存储数据。
每个表包含多个列,每个列定义了一种数据类型。
3.列:列是表中的一个字段,用于存储特定类型的数据。
4.行:行是表中的一条记录,包含了一组相关的数据。
5.索引:索引是对表中一列或多列的值进行排序的数据结构,用于提高查询性能。
6.视图:视图是一个虚拟的表,它是基于一个或多个表的查询结果。
视图可以简化复杂的查询操作。
四、基本操作1.创建数据库:使用CREATEDATABASE语句创建一个新的数据库。
2.创建表:使用CREATETABLE语句创建一个新的表,并定义表中的列和其数据类型。
3.插入数据:使用INSERTINTO语句将数据插入到表中。
4.查询数据:使用SELECT语句从表中检索数据。
5.更新数据:使用UPDATE语句修改表中的数据。
6.删除数据:使用DELETEFROM语句从表中删除数据。
7.创建索引:使用CREATEINDEX语句在表上创建索引,以提高查询性能。
8.创建视图:使用CREATEVIEW语句创建一个新的视图。
informix-4GL
informix-4GL三運⽤資料庫1.指定⼀個欲使⽤的資料庫指定⼀個欲使⽤的資料庫的⽅法很簡單。
只要鍵⼊DATABASSE及資料庫名稱即可<語法> DATABASE 資料庫名稱2.⽤DEFINE命令定義程式變量<語法> DEFINE 變數串列資料型能[…]①變數串列,是⼀個或多個變數,以逗號分開。
②資料型能,是該變數串列的資料型能③DEFINE命令,須緊跟在GLOBAlS,MAIN,FUNCTION或REPORT四個關鍵字之後,或者,在END GLOBALS之後MAIN,FUNCTION,REPORT之前。
後者定義模組變量時。
④變量名稱,不得超過18個字元,但僅有前8個字元作為辨認之⽤不可重複。
同時⼤⼩寫視為相同。
⑤變量名稱,不得⽤保留字。
⑥城市變量名稱,與資料變量表格,或欄位,或資料庫名稱相同時,以程式變量名稱為準,欲使⽤后三者,須在其前加上⼀個@符號。
⑦程式變量的資料型能:注意:程式變數沒有SERIAL型能。
⑧LIKE關鍵字,讓你定義與資料庫欄位資料型能相同的程式變量名稱。
<語法>DEFINE變數名稱[,…] LIKE資料型能·欄位名稱eg: DEFINECUST_name CHAR(20),CUST_balance MONEYEg: DEFINECUST_lname LIKE customer.lname,c_order_date,c_ship_date DATE⑨程式變數,依他們被宣告(DEFINE)的位置,可分為整體變數(GLOBAL),模組變數(MODULE)與局部變數(LOCAL)三種。
⽽有效範圍也不同(1)整體變數(GLOBAL):通常被宣告在獨⽴的⼀個⽂字檔案(.4GL)中,⽽在各程式模組中以GLOBALS“整體變數檔名”的命令,它包進來。
如下⾯這個gl_data.4gl的內容:(與其他模組⼀樣須編譯接到主程式上)(2)模組變數(MODULE):宣告的位置,在每個程式檔案上。
INFORMIX--4GL新手进阶整理
INFORMIX--4GL新手进阶整理Informix - 4GL 初级进阶Informix - 4GL 初级进阶 (2)第一章 INFORMIX-4GL基本组成 (2)第二章 INFORMIX-4GL的处理逻辑 (5)第三章 INFORMIX-4GL中的数据类型 (10)第四章定义程序变量 (19)第五章函数间传值 (24)第一章INFORMIX-4GL基本组成程序INFORMIX-4GL中的程序可以处理大量的应用需求,可以管理小型商业或主要银行的资金。
INFORMIX-4GL程序包括执行特定函数所需的所有部分。
程序:为解决一个问题或处理数据由计算机执行的操作逻辑顺序。
模块文件INFORMIX-4GL的一个构件是模块(module),模块是INFORMIX-4GL指令的机器文件,是整个程序的一部分。
把一组模块组合在一起,就成为整个程序,上图中有三个模块,合在一起就组成了客户程序。
在上图,跟踪记录客户的程序分成了三个模块,每个模块有其特殊的作用,cust_main.4gl模块用于驱动和控制程序,cust_add.4gl模块用于管理新增客户记录,cust_edit.4gl模块包括改变或删除客户记录的INFORMIX-4GL代码。
GLOBALS:在这个函数只用于说明变量声明语句,它也让其它模块知道变量的存在,每个程序只允许有一个GLOBALS函数。
MAIN:给出INFORMIX-4GL开始的位置,INFORMIX-4GL首先总是先读MAIN函数,MAIN函数驱动程序的其余部分,因此,每个程序要有一个MAIN函数(否则INFORMIX-4GL不知从哪儿开始)执行。
REPORT:它是附加的报表格式化语句,其它的函数如MAIN、GLOBALS和FUNCTION不能处理报表语句。
FUNCTION:这是INFORMIX-4GL代码的基本单元,它不象MAIN和GLOBALS有特殊用处,定义一个函数的目的是什么它就做什么。
INFORMIX-4GL教程(简体)
第一章关联式资料模型1-1 前言传统上,企业公司的数据处理,大都是按照部门或应用加以分类。
因此,早期企业公司的计算机大多是为了处理各个部门或者应用系统的大量数据而装置的;例如一家汽车制迼公司,可能有产品制造部门、会计部门;而一家餐馆,可以有编制顾客账单之应用系统、维护应收帐款之档案系统等。
而每一个部门或每一种应用系统原则上都有它自己的主要档案,而各个部门或应用系统都有自己所需的数据,和更新档案及提供信息所需的程序。
利用这种数据处理方式来存取数据,最大的好处是程序的设计方式相当单纯,因为每个档案系统均针对该部门或应用系统的特殊处理要求来设计,因此所设计出来的系统较容易满足各部门或应用系统之要求。
但是相随衍生的问题却不少。
应用系统一应用程序一←→档案系统一(或部门一)应用系统二应用程序二←→档案系统二(或部门二)应用系统N应用程序N←→档案系统N(或部门N)1-2 传统的数据处理一、数据重复相同的数据域栏位值会重复出现在不同的档案系统上。
例如:在一家公司里,销售员的地址数据、学历数据年龄数据也可能会重复地出现在人事管理部门、会计部门、产品销售部门;须要在这么多的档案中输入、保存及维护这些相同的数据,代价何其昂贵啊!举例来说吧!当某一位销售员的地址数据有所更动时,就必须到所储存地址数据的档案系统中,去更正这些旧有的地址数据,否则就会造成数据的不一致。
二、数据的不完整不同的应用系统间之数据往往关系十分密切。
例如:陈先生向银行办理个人小额货款买了一部卡拉OK,然而因未履约,故其卡拉OK须被取回,并降低了他的个人小额贷款的信用等级。
但陈先生在银行里,也曾办过房屋贷款,假使房屋贷款所对应的信用等级未随之同时更新的话,那就产生混乱了。
然而要维持数据的完整性,就须执行好几个程序来更新数据,此将花费很高的费用。
三、数据的不安全由于企业公司各部门各自为政,公司的数据分散在不同的档案系统上,对于敏感性和机密性较高的数据,无法做有效的集中管理;往往会因某些部门负摃人的管理不善,而让商业间谍有机可乘,从中盗取机密数据。
INFORMIX-4GL实用手册(四)(1)
Informix-SPL(过程)语法详解Informix数据库用户一般都熟悉的使用SQL语句进行简单的查询和统计,而在Informix-Online的数据库服务器中提供了用结构化查询语言SQL语句和流程控制存储语言SPL创建存储例程,以减少Informix的处理。
存储例程是SQL语句和SPL的集合。
它们存放在数据库中,SQL语句会被分析.优化,在例程的执行中,高速缓存中会有一执行规划,使后续操作的执行速度很快。
而单独的SQL语句只有在执行时才会被优化,并且存储例程可以被不同的开发工具调用(4GL、ESQL/C、POWERBUILDER.DELPHI),在SELECT 语句中也调用过程。
例程调试简单,不必重新编译应有软件包。
在例程创建时Informix查询处理器会分析它,并产生一执行规划,永久存放于SPROCEDURES.SYSPROBODY.和SYSPROPLAN中,其后例程按此规划执行,由于大部分查询处理已经完成,存储例程可以在瞬间执行完毕。
由于存储例程所具有的优越性,它已成为进行Informix数据库核心开发的有力工具,掌握它对Informix的开发人员有积极意义,现将我在实际工作中使用的语法和例子详解于下,疏漏和错误请来信指教。
1.创建和执行例程①.创建例程语法:CRAETEPROCEDURE[OWNER.]PROCEDURE_NAME(参数1参数类型=[DEFAULT],参数2参数类型=[DEFAULT],参数n参数类型=[DEFAULT])RETURNING值1类型,值2类型,值n类型;<......>语句体;ENDRPOCEDURE例程大小不可超过64K,这包括所有的SQL.SPL.空格.跳格符,例程名最多18个字符,并在数据库中唯一存在,语句间用";"分隔,例程只能在当前数据库中创建,例程创建后是一标准执行模板块,可在不同的应有中对其调用,这对开发不同版本的应用将更为便利。
INFORMIX -4GL 教程 的 入门 教材 数据库1-5
ERROR "小於1" ELSE LET p_count = p_count + 1 END IF
5-4 FOR 敘述
<語法格式> FOR varibale = integer_exp TO integer_exp STATEMENT ... [CONTINUE FOR] ... [EXIT FOR]
5-12 CALL 敘述
<語法格式> CALL 函數([參數串列]) [RETURNING 變數串列] §例: call sample_function(parm1,parm2) returning variable call sample_function(parm) call sample_function()
END IF
END IF
END IF
file:///E|/erpdown/20100809(鼎捷)/易拓/Genero/NFORMIX-4GL的入门教材/1-5.htm[2010/8/10 19:39:24]
END IF
....
....
....
....
....
END FOR
....
....
....
....
5-5 CASE 敘述
<語法格式> CASE [(exp)] WHEN {exp|boolean} statement ... [exit case] WHEN {exp|boolean} statement ... [exit case] ... OTHERWISE statement ... [exit case] END CASE §例: case choise when 1 : call choice-1() when 2 : call choice-2() when 3 : call choice-3() when 4 : call choice-4()
INFORMIX -4GL 教程 的 入门 教材 数据库1-3
!!manu_code char(3),total_price money(8))insert into newtable select item_num,order_num,quantity,stock_num,manu_code,total_pricefrom itemsdrop table itemsrename table newtable to itemsrename column customer.customer_num to c_num3-7 SELECT Statement<語法格式>SELECT clauseFROM clause[WHERE clause][GROUP BY clause][HAVING clause][ORDER BY clause][UNION SELECT clause]3-7-1 SELECT<語法格式>SELECT[ALL|DISTINCT|UNIQUE] select_list§例:select customer_num, lname, cityfrom custom件!m软m P文档及软件!from orderwhere customer_num = 101select avg(total_price)from itemswhere order_num = 1008select a+b abtotal, c*d cdprodfrom itemswhere order_num = 10083-7-2 FROM<語法格式>FROM[OUTER]table_name[table alias][,...]§例:select fname, lname, order_numfrom customer, orderswhere customer.customer_num = order.customer_numselect fname, lname, order_numfrom customer, outer orderswhere customer.customer_num = order.customer_num3-7-3 WHERE<語法格式>WHERE conditioncondition 是由一個或一個以上的尋找條件(search condition)配合邏輯運算元AND、OR、NOT 所組成。
Informix-4gl学习资料 informix-4gl
第一章 Informix环境变量的设定一.环境范例:二.环境范例:.profile (环境变量的等号前后不得为空格)stty -istrip -isig (防止用户非法中断)INFORMIXDIR=/usr/informixINFORMIXSERVER=ld420501_tcpONCONFIG=onconfig.lifePATH=$PATH:$INFORMIXDIR/bin:$HOME/bin:$HOME/form:$HOME/prg DBPATH=/u/cbps/form:/u/cbps/binFORMDIR=/u/cbps/formDBDATE=Y4MD/LANG=english_us.8859DBLANG=english_us.8859DBNLS=2TERMCAP=/usr/informix/etc/termcapTERM=vt100export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH DBPATH FORMDIR DBDATE LANGexport DBLANG DBNLS TERMCAP TERM环境变量的设置文件中还可加入其它Shell语句第二章 Informix产品线及DB应用开发工具简介一.Informix(英孚美)产品线简介(三大类):1.数据库服务器(Database Server):①.ODS (Informix-Online Dynemic Server)联机动态服务器,多线索,多性能的DB server(数据库服务器)②.XPS (Informix-Online Extended Parallel Server)将DSA扩展至松耦合或非共享的计算体系结构,动态可申缩性体系结构(Dynemic Scerable Architerta),适用于大型数据库的应用,并行SQL操作。
③.IUS (Informix-Universbl Server)处理丰富而复杂的数据而设计,并用Datablade模块技术,用来存储和检索丰富的多媒体Data及其他复杂的插入或对象扩展模块。
INFORMIX -4GL 教程 的 入门 教材 数据库1-6
!當使用者要宣告通用變數時,必須使用 GLOBALS 敘述<語法格式>GLOBALSDEFINE_STATEMENT...END FLOBALS1.globals 必須定義在程式的最前面。
2.若使用 LIKE 關健字時,則在 globals 之前必須有 database 的敘述。
6-5 變數傳遞的範圍┌──────────────────────────┐│ globals ││ define variable a │| ┌────────────────┐ |│ | main │ |│ | define variable b │ |│ └────────────────┘ || ┌────────────────┐ |│ | function │ |│ | define variable c │ |│ └────────────────┘ |│ │└──────────────────────────┘┌────────────────────────┐│ 敘述 變數 型態 範圍 │├────────────────────────┤│ globals a 通用性 main |│ function |件!├────────────────────────┤m软├────────────────────────┤│ function c 區域性 function │└────────────────────────┘§例:A.4GL┌──────────────────────────┐│ ││ globals ││ define var_a char(1) │| end globals |│ ││ main |│ let var_a = 'A' |│ call test_global() |│ call test_global() |│ end main ││ │└──────────────────────────┘B.4GL┌──────────────────────────┐│ ││ globals "A.4GL" ││ define var_b char(1) ││ │| function test_global() |│ define var_c char(1) ││ display "=========" |件!m软m P文档及软件!│ display "var_b = ", b |│ display "var_c = ", c |│ let var_b = 'B' |│ let var_c = 'C' |│ end function ││ │└──────────────────────────┘結果:=========var_a = Avar_b = ?var_c = ?=========var_a = Avar_b = Bvar_c = ?6-6 參數的傳遞function 中的參數必須在 function 中事先用 define 定義。
INFORMIX -4GL 教程 的 入门 教材 数据库1-8
1.定義螢幕記錄 2.改變顯示欄位預設的分界符號
8-1-6-1 定義螢幕記錄
<語法格式一> SCREEN RECORD rec_name(field_name1 THRU field_name2)
rec_name表示螢幕記錄的名稱,field_name1表示範圍內第一個欄位,field_name2 表示範圍內最後一個欄位.
INFORMIX-4GL教程
INFORMIX-4GL教程
您的位置:首页>>INFORMIX-4GL教程>>第八章 萤幕画面(FORM)的制作
第八章 萤幕画面(FORM)的制作
8-1畫面規格之架構
畫面之規格主要是由DATABASE,SCREEN,TABLES,ATTRIBUTES和INSTRUCTIONS所組成的。
file:///E|/erpdown/20100809(鼎捷)/易拓/Genero/NFORMIX-4GL的入门教材/1-8.htm[2010/8/10 19:39:32]
访问www.获erp取d免ow费nE.RcoPm文档及软件!
INFORMIX-4GL教程 f01 = ssaltab.idno,UPSHIFT,AUTONEXT; m = ssaltab.proj_ty,FORMAT="&",COMMENTS="工作計劃",AUTONEXT; fj = ssaltab.pos_ty,FORMAT="&&&",AUTONEXT; f02 = ssaltab.emp_name,AUTONEXT; f06 = ssaltab.unit_name,NOENTRY; f07 = ssaltab.pos_name,NOENTRY; d = ssaltab.ins_ty,COMMENTS="0.無 1.公保 2.勞保 3.滿三十年公保 " ,INCLUDE=("0" TO "3") ,AUTONEXT; h = ssaltab.wel_num,COMMENTS="0.無 1.有",INCLUDE=(0 TO 1),AUTONEXT; w = ssaltab.fins_num,INCLUDE=(0 TO 5) ,AUTONEXT; j = ssaltab.house_ty,COMMENTS="0.無 1.有扣房屋津貼 ", INCLUDE=("0","1"),AUTONEXT; f17 = ssaltab.account_no,PICTURE = "#####",AUTONEXT; f21 = ssaltab.paccount_no,PICTURE = "#####",AUTONEXT; fl = FORMONLY.char6,NOENTRY; insu = ssaltab.insure_no,AUTONEXT; fo = FORMONLY.char5,NOENTRY; a = plantab.yy, FORMAT = "&&",REVERSE, AUTONEXT; k = plantab.budget, FORMAT = "#,###,###,##&", COLOR = REVERSE WHERE k IS NOT NULL, AUTONEXT; l = _budget , FORMAT = "-,---,---,--&", AUTONEXT, COLOR = RED blink WHERE l < 0 ;
Informix培训教材整理之系统维护技巧谈
Informix培训教材整理之系统维护技巧谈Informix是一种大型的数据库管理系统,具有先进的技术、性能与可靠性,在全球范围的各种应用中使用十分广泛,包括政府、金融保险、邮政电信、制造及零售等重要行业或领域。
本文根据笔者在SCOUnix/Xenix上使用Informix-4GL与Informix-SQL的经验,简要介绍Informix系统维护中的几个较为特殊的问题及其处理方法。
表文件的修复:Informix的数据库是指由若干张表所构成的集合,其中每一张表对应着两个文件,即数据文件(后缀为.dat)与索引文件(后缀为.idx)。
当系统出现异常、死机、掉电或非正常关闭时,有时会使一些使用中的表文件未能正常关闭而出现毁损,当系统再次对这些表进行相关操作时,就会报告“不能检索下一条记录”、“不能删除记录”等错误信息。
通常,数据文件是很少发生问题的。
要判别数据文件是否正常,只需执行select * from 〈table—name〉语句或类似的语句即可,但不能使用where、order by等子句,以免利用到索引文件,目的就是纯粹从数据文件中依次读取数据。
如果数据读取顺利且记录个数正确,表明该文件完好无损;反之,则有问题,通常只能用其数据备份来恢复。
如果数据文件正确无误,那么就该检查相应的索引文件。
Informix提供有一个实用程序bcheck,专门用来检查与修复索引文件,即依次比较数据文件与索引文件,倘若不一致,就询问是否删除和重建有问题的索引。
bcheck有许多选项可供选用,其中-n和-y用于对所有的提问都回答“no”或“yes”,让系统自动进行一系列的操作。
其语法如下:bcheck[选项] 〈表文件名〉要检查表的索引文件,应先运行bcheck-n命令。
如果一切正常,说明索引没有问题。
一旦发现有错误报告(如有多少个错误数据记录指针、丢失了多少个数据记录指针或索引结点指针等),则再执行bcheck-y 命令即可将其修复。
INFORMIX -4GL 教程 的 入门 教材 数据库1-7
7-3 刪除的處理
<語法格式> DELETE FROM table_name [WHERE clause] §例: DELETE
FROM sfamilytab
§例:
file:///E|/erpdown/20100809(鼎捷)/易拓/Genero/NFORMIX-4GL的入门教材/1-7.htm[2010/8/10 19:39:28]
<語法格式二> UPDATE table_name SET table_name.* = record_name.* [WHERE clause] §例: UPDATE ssaltab SET ssaltab.* = curr_ssaltab.*
WHERE ssaltab.idno = curr_ssaltab.idno IF SQLCA.SQLCODE = 0 AND SQLCA.SQLERRD[3] > 0 THEN ERROR "更正成功" ELSE ERROR "更正失敗 !! ==> 請通知系統人員,謝謝" RETURN END IF
INSERT INTO sfamilytab VALUES(s_st[i].*)
IF SQLCA.SQLCODE != 0 OR SQLCA.SQLERRD[3] <= 0 THEN
4gl基础语法
4GL(Fourth Generation Language)是一种高级编程语言,主要用于数据库应用程序的开发。
它提供了一种更快捷、更简便的方式来编写应用程序,并且具有更强大的功能和更高的效率。
4GL基础语法主要包括以下几个方面:1. 数据类型和变量声明:在4GL中,变量的声明非常简单直观。
一般使用关键字来声明变量,并指定变量的数据类型。
常见的数据类型包括整数、浮点数、字符串、日期等。
例如,可以使用`DEFINE`关键字来声明一个整数类型的变量和一个长度为20的字符串类型的变量。
2. 控制结构:4GL支持各种常用的控制结构,如条件语句、循环语句等。
条件语句使用IF...THEN...ELSE...END IF结构,例如:`IF x > 0 THEN DISPLAY "x is positive" ELSE DISPLAY "x is zero or negative" END IF`。
循环语句使用FOR...NEX结构。
3. 数据库操作:4GL提供了丰富的数据库操作语法,包括连接数据库、执行SQL语句、处理查询结果等。
例如,可以使用以下语法来连接数据库:`CONNECT TO DATABASE <DB Name>`。
4. 函数和过程:4GL提供了许多内置函数和过程,用于执行各种操作,如字符串处理、日期处理、数学计算等。
同时,用户也可以自定义函数和过程。
5. 输入输出:4GL提供了简单的输入输出语法,用于从用户获取输入或将结果输出到屏幕或文件。
例如,可以使用`READ`语句从用户获取输入,使用`DISPLAY`语句将结果输出到屏幕。
以上是4GL基础语法的一些主要内容,但实际上还有很多细节和规则需要了解和学习。
如果您想深入学习4GL,建议参考相关教材或参加培训课程。
INFORMIX -4GL 教程 的 入门 教材 数据库1-10
§例: 欲查所有姓名中有 "成功" 的資料,可在姓名欄位中輸入條件[*成功* ]。
10-3 CONSTRUCT 敘述
程式的查詢條件 construct select 大約可分成四個步驟: 1.用 construct 定義,將等待使用者輸入條件的各個螢幕欄位組合後的條件句存放到一個字串變數。 2.用 LET 將前面字串變數與 select 子句的其它的部份字串連結。 3.用 PREPARE 將前面合成的命令句,編譯成可執行的 select 子句。 4.宣告 pointer cursor DECLARE-FOREACH 敘述執行 select 子句,找出使用者的資料。
10-2 使用者可用的查詢條件
┌──────────────────────────┐ │ 運算子 意 義 適用資料型態 │ ├──────────────────────────┤ │ = 等於 全部 │ │ > 大於 全部 │ │ < 小於 全部 │ │ >= 大於或等於 全部 │ │ <= 小於或等於 全部 │ │ <> 不等於 全部 │ │ * 萬用字串 CHAR │ │ ? 萬用字串 CHAR │ │ : 連續的範圍 全部 │ │ | 或 全部 │ └──────────────────────────┘
10-5 使用 CONSTRUCT 應注意事項
file:///E|/erpdown/20100809(鼎捷)/易拓/Genero/NFORMIX-4GL的入门教材/1-10.htm[2010/8/10 19:38:48]
访问www.获erp取d免ow费nE.RcoPm文档及软件!
INFORMIX-4GL教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Informix - 4GL 初级进阶Informix - 4GL 初级进阶 (1)第一章INFORMIX-4GL基本组成 (1)第二章INFORMIX-4GL的处理逻辑 (3)第三章INFORMIX-4GL中的数据类型 (6)第四章定义程序变量 (11)第五章函数间传值 (14)第一章INFORMIX-4GL基本组成程序INFORMIX-4GL中的程序可以处理大量的应用需求,可以管理小型商业或主要银行的资金。
INFORMIX-4GL程序包括执行特定函数所需的所有部分。
程序:为解决一个问题或处理数据由计算机执行的操作逻辑顺序。
模块文件INFORMIX-4GL的一个构件是模块(module),模块是INFORMIX-4GL指令的机器文件,是整个程序的一部分。
把一组模块组合在一起,就成为整个程序,上图中有三个模块,合在一起就组成了客户程序。
在上图,跟踪记录客户的程序分成了三个模块,每个模块有其特殊的作用,cust_main.4gl 模块用于驱动和控制程序,cust_add.4gl模块用于管理新增客户记录,cust_edit.4gl模块包括改变或删除客户记录的INFORMIX-4GL代码。
模块包括一个或多个函数的集合。
函数(function)是INFORMIX-4GL代码最基本的单元,它是在被调用时执行的一组INFORMIX-4GL语句序列。
在INFORMIX-4GL程序中函数一次也没执行过也是有可能的,例如,如果从没删除过客户,那么函数delete_cust就不会被调用函数类型在INFORMIX-4GL中有四种函数,不同的函数名表示不同种类的INFORMIX-4GL语句功能。
GLOBALS:在这个函数只用于说明变量声明语句,它也让其它模块知道变量的存在,每个程序只允许有一个GLOBALS函数。
MAIN:给出INFORMIX-4GL开始的位置,INFORMIX-4GL首先总是先读MAIN函数,MAIN函数驱动程序的其余部分,因此,每个程序要有一个MAIN函数(否则INFORMIX-4GL不知从哪儿开始)执行。
REPORT:它是附加的报表格式化语句,其它的函数如MAIN、GLOBALS和FUNCTION不能处理报表语句。
FUNCTION:这是INFORMIX-4GL代码的基本单元,它不象MAIN和GLOBALS有特殊用处,定义一个函数的目的是什么它就做什么。
第二章INFORMIX-4GL的处理逻辑有六种:IF 、CASE 、WHENEVER 、WHILE、FOR 、FOREACH判断和循环语句INFORMIX-4GL有一组判断和循环语句,它用于程序在执行时决定执行的顺序。
判断逻辑:分支同其它语言一样,INFORMIX-4GL提供了随变量条件而执行相应语句的方法。
用IF…THEN…语句可以根据一定的条件做相应的动作。
例如:当用户输入错误时可以显示特定的错误信息。
给IF…THEN…语句加入ELSE子句,可以描述一个测试条件不满足时的可选动作。
有可能的话,多个IF语句可以嵌套使用,可以把一组相关的动作放在一个语句里。
CASE语句也可以完成这一功能。
IF语句IF…THEN…[ELSE]用于测试值为TRUE或FALSE的表达式。
IF语句是执行条件语句的指令。
它包括两条逻辑选择。
在程序执行过程中,当测试条件为TRUE,INFORMIX-4GL执行跟在保留字THEN后面的语句,并以END IF或ELSE保留字为结尾。
若有ELSE子句,在测试条件为FALSE(或NULL)时,INFORMIX-4GL才执行ELSE子句。
嵌套IF语句IF语句可以嵌套在IF语句中,常见的错误是忘了写END IF保留字或在嵌套IF语句中,IF和END IF不匹配。
这种情况下编译时会出现错误信息,提示一般语法错误。
CASE语句:CASE语句可以减少多重IF语句。
它常用于在一个语句中表示连贯相关的选择判断。
判断:WHENEVERWHENEVER语句在INFORMIX-4GL语句执行过程中用于捕获错误和例外情况。
WHENEVER是个编译开关(Compiler Swith),编译开关或编译指令并不在程序运行过程中执行,是在处理代码时改变编译模式。
WHILE循环用WHILE循环在状态布尔表达式值为TRUE时一直执行循环体语句或语句组。
EXIT WHILE语句把程序控制权转到END WHILE后的第一个语句处执行。
CONTINUE WHILE语句中断循环体语句序列,并把程序控制权返回给循环体头部,并测试布尔表达式值。
若布尔表达式值为FALSE,程序控制跳过剩余的循环。
FOR循环用FOR循环可以指定迭代的次数。
若用了带整型表达式的STEP保留字。
循环步长按STEP 中指定的值增加。
因为整型表达式可以是一个变量,所以可以动态地设置循环总数。
第三章INFORMIX-4GL中的数据类型CHAR字段(character)存储任意字母、数字和符号的组合。
存储的数据可以是名字、地址、社会安全号码、电话号码和其它由字母、数字、标点及其它符号组成的信息。
在多数应用中,CHAR是常用的数据类型,它占用了大部分磁盘空间。
CHAR字段的最大长度是32767字节。
CHAR是固定长度的,若定义字符字段为400字节,即使数据小于400字节,这个字段在磁盘上也要占够空间数。
有五种数字类型字段,每种表示不同类型的数字。
数字字段不能存放字符或符号,但是,加(+)和减(-)可放在数字字段用于表示正、负。
在小型应用中两者的区别可能不明显,但在大型应用中有本质的区别。
FLOAT和SMALLFLOAT这两种数据类型存储二进制浮点数,用于科学计算。
这两种数据类型的精度:●FLOAT 双精度。
14位有效数字●SMALLFLOAT 单精度。
7位有效数字FLOAT可以存储SMALLFLOAT类型数据的两倍。
FLOAT字段不是存放大数据,而是存放高精度数据。
DECIMAL存储用户指定的带小数点数字。
最高为32位数字。
DECIMAL数字可以用给定的精度和标尺显示。
●精度是整个数字的位数●标尺是小数点右边的数字个数定义为(5,2)的DECIMAL字段可以存储小数点前3位整数,小数点后2位小数的5位数字数据。
精度和标尺是可选项。
●无精度时:DECIMAL可看作是DECIMAL(16),即16位精度的浮点数。
●无标尺时:DECIMAL可看作是一个浮点小数。
DECIMAL可以是高精度数且能对数字进行四舍五入。
FLOAT表示的精度因机器的不同而不同,这在网络数据传输中会有影响。
MONEY存储货币金额。
金额以前导$表示。
它可以描述类似DECIMAL数据类型的高达32位的数字。
同DECIMAL一样,MONEY字段要给定精度和标尺。
它是固定长度的。
MONEY字段没有给定精度和标尺时缺省的是DECIMAL(16,2)。
占用的磁盘空间缺省是八位。
这比大部分应用所需的高。
你可以定义MONEY字段所需的最大范围来节省磁盘空间。
若需要,以后还可以增加。
SERIAL字段是系统分配给表中每行INTEGERS存储字段的唯一值。
当行增加时,其值按序增加。
缺省起始数为1,最大值为二十一亿。
一个表中只能有一个SERIAL字段且这个字段一般为主键(PK)。
程序变量不能是SERIAL数据类型。
若起始数设为100,则加入的第一行序列值为100。
不要试图在分配了SERIAL后改变其值。
SERIAL值是不能用UPDATE语句修改的。
尽管它可以修改SERIAL数,但是不方便也是不必要的,如果程序不得不维护一系列连续的审计ID号,就要用别的方法来产生。
当一行或多行被删除,虽然数据被移走,但SERIAL值仍然增加,因此,当新增一行时,仍然分配序列的下一个数。
SERIAL数是不能重复利用的。
DATE数据类型用于存储日历数,当日期以INTEGERS存储时,DATE数据可以用上图所列的任意格式插入DATE字段。
DATE数据类型是从1899年12月31日往后开始的,即1900年1月1日是第一天。
DATETIME数据类型用于存储表示时间点的值。
它使得精度更高且选择点更细。
DATETIME精度范围大可以到年,小到计算机时间片的秒。
DATETIME优于DATE数据类型。
它定义了从年到时间片秒的时间点。
DATETIME(1990-4-24 12:00) YEAR TO MINUTEDATETIME(16 12:23) DAY TO MINUTEDATETIME(31.234) SECOND TO FRACTIONDATETIME数据项可以是公元1年到公元9999年之间的任一时间点。
INTERVAL数据类型用于存储一个时间段。
如上图,第一个INTERVAL表示89年零8个月,第二个INTERVER表示560天零2小时25秒。
例如:INTERVAL(5-3) YEAR TO MONTHINTERVAL(11:15) HOUR TO MINUTEINTERVAL数据项可以表示大到9999年零1个月或小到时间片秒。
INTERVAL数据类型不能即包括月又包括日,这是因为月中的天数是随月份不同而不同的,如3月是31天,而9月是30天。
每年月份中的天数也是不同的,二月份的天数每四年从28天到29天变一次。
因为日历上的不同,ANSI把INTERVAL类型分成两个子类:年—月型INTERVAL和日期—时间型INTERVAL。
INFORMIX-OnLine引擎允许在字段中存储变长字符类型,这个类型叫VARCHAR。
用VARCHAR的主要好处是,它可以增加存储在磁盘上每页的行数,提高读表的性能。
VARCHAR与CHAR数据类型字段相比,它减少了磁盘浪费。
VARCHAR字段可以存储0~255位字符数据,当定义VARCHAR数据类型时,要定义字段的最大长度。
开发者可以根据性能需要指定一个最小的长度。
max-size参数设置了数据项中允许输入的最长字符限制。
min-size参数设置了占用的最小磁盘空间。
第四章定义程序变量DEFINE语句的放置位置决定了变量的范围。
把DEFINE放在Global函数中,使其它所有函数都能使用该变量。
这个变量是全局的。
●在其它模块中调用Globals:要在其它模块中调用Global部分,必须让其它模块知道这个Global部分。
●在第一个函数外部定义变量:在cust_main.4gl中,DEFINE语句放在了global调用后面,但在MAIN之前。
这给变量以模块级范围。
要使变量有模块范围,必须把DEFINE语句作为global调用后的第一个语句。
●在函数内部:若DEFINE放在FUNCTION保留字后面,它就具有局部范围。
函数保留字包括MAIN、FUNCTION和REPORT。
若变量是局部范围的,它只能在定义它的函数内部使用。