INFORMIX4GL手册(三)数据库
【简介】感谢网友“aqi”参与投稿,下面小编给大家整理了INFORMIX4GL手册(三)数据库(共3篇),供大家阅读参考。
篇1:INFORMIX4GL手册(四)数据库
Informix-SPL(过程)语法详解 Informix 数据库 用户一般都熟悉的使用 SQL 语句进行简单的查询和统计,而在Informix-Online的数据库 服务器 中提供了用结构化查询语言SQL语句和流程控制存储语言SPL创建存储例程,以减少Informix的处理,存储例程是SQL语句和SPL
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个字符,并在数据库中唯一存在,语句间用“;”分隔,例程只能在当前数据库中创建,例程创建后是一标准
执行模板块,可在不同的应有中对其调用,这对开发不同版本的应用将更为便利。例:
createprocedure“test”.upwage
definerev_rev_item_codevarchar(2,0);
definerev_p_rev_datedate;
defineaclearcase/“ target=”_blank“ >cc_rec_prem_nodecimal(8,2);definerev_p_rev_amtdecimal(10,2);definerev_I_info_branchvarchar(6,0);definerev_I_info_appl_nodecimal(8,0);definerev_I_info_datedate;definerev_o_rev_datedate;
definerev_o_rev_amtdecimal(10,2);
defineacc_ac_rev_amntdecimal(10,2);
defineacc_rec_prem_datedate;
beginwork;
foreachcur_revforselectI_info_appl_branch,I_info_appl_no,I_info_date,
o_rev_date,o_rev_amtintorev_I_info_branch,
rev_I_info_appl_no,rev_I_info_date,rev_o_rev_date,rev_o_rev_amtfromrev_rec_tblwhere
(rev_item_code=”PS“)andp_rev_dateisnulland
p_rev_amt=0and(I_info_appl_noisnotnullor
I_info_dateisnotnull);
selectmax(rec_prem_acc_no)intoacc_rec_prem_nofromrec_prem_accwhereI_info_appl_branch=rev_I_info_branch
andI_info_appl_no=rev_I_info_appl_no
andI_info_date=rev_I_info_date
ando_rev_date=rev_o_rev_date
andrev_item_code=”PS“and
ac_rev_amnt=rev_o_rev_amt;
selectdate(rec_prem_date)intoacc_rec_prem_date
fromrec_prem_accwhereI_info_appl_branch=rev_I_info_branch
andI_info_appl_no=rev_I_info_appl_no
andI_info_date=rev_I_info_date
ando_rev_date=rev_o_rev_date
andrev_item_code=”PS“and
ac_rev_amnt=rev_o_rev_amtand
rec_prem_acc_no=acc_rec_prem_no;
selectac_rev_amntintoacc_ac_rev_amnt
fromrec_prem_acc
whereI_info_appl_branch=rev_I_info_branch
andI_info_appl_no=rev_I_info_appl_no
andI_info_date=rev_I_info_date
ando_rev_date=rev_o_rev_date
andrev_item_code=”PS“
andrec_prem_acc_no=acc_rec_prem_no
andac_rev_amnt=rev_o_rev_amt;
ifacc_ac_rev_amntisnulloracc_rec_prem_dateisnullthen
continueforeach;
endif;
updaterev_rec_tbl
setp_rev_date=acc_rec_prem_date,
p_rev_amt=acc_ac_rev_amnt
whereI_info_appl_branch=rev_I_info_branch
andI_info_date=rev_I_info_date
andI_info_appl_no=rev_I_info_appl_no
ando_rev_date=rev_o_rev_date;
endforeach;
commitwork;
endprocedure;
②.执行例程语法:
A):在dbaccess中
EXECUTEPROCEDUREDBNAME@SERVER_NAME:例程名(参数1,参数2,.....)用这种方法可对例程进行调试,
B):在Informix-4GL中
PREPAREPREPSTATTEMENTFROM”EXECUTEPROCEDUREDBNAME@SERVER_NAME:例程名(?,?,?,...)
DECLAREP_CURSSURSORFORPREPSTMT
OPENP_CURSUSING参数1,参数2,....
FETCHP_CURSINTO返回值1,返回值2,...
CLOSEP_CURS
当应用程序不支持EXECUTPROCEDURE语法,则需使用PREPARE命令,如INFORMIX-4GL中,而使用INFORMIX-NEWEAR则无此限制,需注意的是PREPARE语句中变量用?号代替,其个数要与例程的参数个数和类型一致,返回值也是一样。
C):在Informix-ESQL/C中
EXECSQLEXECUTEPROCEDURE例程名(参数1,参数2,...)INTO(返回值1,返回值2,...)在EC5.0或更高版本可使用EXECUTEPROCEDURE语法,在ESQL/C中宿主变量用于想存储例程传递值,同时也接收返回值.
D):在POWERBUILDER中
DECLARE逻辑名PROCEDUREFOR例程名(:参数1,:参数2:...)INTO:返回值1,:返回值2,..USING事物名
EXEC例程名(:参数1,:参数2,.....)
PB要求为例程制定逻辑名,以后的SQL语句将以逻辑名为准指向后台数据库例程,当例程即便没有参数也必须有小扩号.
共3页: 1 [2] [3] 下一页
原文转自:www.ltesting.net
篇2:INFORMIX4GL手册(一)数据库
Informix环境变量的设定 一.环境范例 变量名称 变量说明 DBDELI MI TER 指定由dbload在卸出数据文件中使用的字段定界符 DBDATE 指定在DB中想要使用的日期格式(Y4MD/,MDY4-) DBEDIT 指定在 程序员 环境中想要使用的文本编辑器(vi) DBLANG 指定在程序中所使用
Informix环境变量的设定
一.环境范例
变量名称 变量说明
DBDELIMITER 指定由dbload在卸出数据文件中使用的字段定界符
DBDATE 指定在DB中想要使用的日期格式(Y4MD/,MDY4-)
DBEDIT 指定在程序员环境中想要使用的文本编辑器(vi)
DBLANG 指定在程序中所使用消息文件的存放目录
DBMONEY 指定在DB中想要使用的货币格式
DBPATH 指定DB与其它相应文件的搜索路径
DBPRINT 指定计算机的打印程序
DBSRC 指定程序调试阶段文件的搜索路径
DBTEMP 指定临时文件的存放目录
INFORMIXDIR 指定Informix文件的存放目录(/usr/informix)
INFORMIXSERVER 指定Informixr的数据库服务器名称
FORMDIR 指定Informix屏幕格式文件的存放路径
DBNLS 指定Informix传输汉字(DBNLS=2)
LANG 指定Informix可显示汉字(LANG=english.8859)
ONCONFIG 指定Informix-Online的配置文件(onconfig.life)
PATH 指定Informix可执行文件的搜索路径
TERM 指定Informix的终端类型(TERM=vt100)
TERMCAP 指定Informixr的终端类型文件
二.环境范例
.profile(环境变量的等号前后不得为空格)
stty-istrip-isig(防止用户非法中断)
INFORMIXDIR=/usr/informix
INFORMIXSERVER=ld420501_tcp
NCONFIG=onconfig.life
PATH=$PATH:$INFORMIXDIR/bin:$HOME/bin:$HOME/form.:$HOME/prg
DBPATH=/u/cbps/form.:/u/cbps/bin
FORMDIR=/u/cbps/form
DBDATE=Y4MD/
LANG=english_us.8859
DBLANG=english_us.8859
DBNLS=2
TERMCAP=/usr/informix/etc/termcap
TERM=vt100
exportINFORMIXDIRINFORMIXSERVERONCONFIGPATHDBPATHFORMDIRDBDATELANG
exportDBLANGDBNLSTERMCAPTERM
环境变量的设置文件中还可加入其它Shell语句
Informix产品线及DB应用开发工具简介
一.Informix(英孚美)产品线简介(三大类):
1.数据库服务器(DatabaseServer)
①.ODS(Informix-OnlineDynemicServer) 联机动态服务器,多线索,多性能的DBserver(数据库服务器)
②.XPS(Informix-OnlineExtendedParallelServer) 将DSA扩展至松耦合或非共享的计算体系结构,动态可申缩性体系结构(DynemicScerableArchiterta),适用于大型数据库的应用,并行SQL操作,
INFORMIX4GL实用手册(一)(1)数据库
,
③.IUS(Informix-UniversblServer)
处理丰富而复杂的数据而设计,并用Datablade模块技术,用来存储和检索丰富的多媒体Data及其他复杂的插入或对象扩展模块。
2.应用开发工具
①.Informix-NERERA适用于关键性业务的C/S(客户机/服务器)模式,开放性,图形化面向对象的开发环境。└→Client/ServerModel
②.Informix-4GL适用于各种类型业务的哑终端操作方式,适用性广,开发方便,可维护性好,功能强大,无图形功能,用户界面不够友好。
③.Informix-SQL符合国际标准的SQL语言,具有通用性,DDL与DML合为一体,高度的非过程化,分为嵌入式和交互式两种形式,具有数据控制,访问功能。
④.Informix-ESQL/C把SQL嵌入C语言提供实现SQL语言的目标函数库,利用宿主程序完成一个应用的过程。
3.连接工具
c4gl<*.4gl*.c*.ec*.o>-c,o,s
└→4gl源程序文件的编译,连接生成目标文件或可执行文件
esql<*.ec*.c*.o>-c,o
└→esql源程序文件的编译,连接生成目标文件或可执行文件
cc<*.c*.o>-c,o
└→c语言源程序文件的编译,连接生成目标文件或可执行文件
二.SQL(StructuredQueryLanguage)简介
1.SQL(结构化查询语言)的主要特点:(RDBServer关系型数据库服务器)
①.一体化:DDL与DML合为一体.
②.高度非过程化:whattodo,nothowtodo用户使用起来简单方便.
③.具有SQL交互式与SQL嵌入式两种形式.
2.SQL语言的分类:
①.DDL(数据定义语言):用来创建,更改,删除数据库基表视图.
②.DML(数据操纵语言):对DB中的数据进行查询或增删改操作.
③.DCL(数据控制访问语言):对存取权根的控制,授权和回收,游标语句,动态管理语句,数据完整性语句,查询优化语句,事务处理语句.
三.Stores7,Dbaccess,Isql,I4gl,Upscol等DBMS实用工具
1.$dbaccessdemo7[DBname][withlog]
└→创建范例DB└→数据库名└→缺省不带系统日志
2.$dbaccess
└→捆绑在Informix-OnlineDBServer上的一套DBMS实例程序,可以做到:
①.利用该工具可以做到创建和删除数据库.
②.查询数据库中各种信息,编辑使用SQL语句.
③.创建,更改,删除数据库基表.
④.增加,删除,修改数据库中原始记录.
⑤.从OS(操作系统)文件中装载数据到数据库中.
⑥.将数据库中的数据卸出到一个OS(操作系统)文件中.
⑦.创建回收权限.
⑧.利用该工具可以创建,删除,修改Procedure(过程)。
共2页: 1 [2] 下一页
原文转自:www.ltesting.net
篇3:INFORMIX4GL手册(三)数据库
关系数据库Informix-4GL程序设计 一.关系数据库程序设计的关键和方法 1.成功设计一个关系数据库的关键因素: ①.深入广泛、了解企业内部组织机构及需求; ②.始终保持与最终用户交互、联系; ③.设计过程中要采用结构化的 开发 方法,便于维护; ④.要用ER图
关系数据库Informix-4GL程序设计
一.关系数据库程序设计的关键和方法
1.成功设计一个关系数据库的关键因素:
①.深入广泛、了解企业内部组织机构及需求;
②.始终保持与最终用户交互、联系;
③.设计过程中要采用结构化的开发方法,便于维护;
④.要用ER图表示数据结构模型,
2.结构化的开放方法交整个应用的开发周期划分成阶段:
①.系统开发的可行性报告;
②.程序的功能需求;
③.技术设计(系统规格说明书);
④.编程及测试(源程序代码清单);
⑤.用户培训、实现(用户手册)。
⑥.程序的维护与升级。
3.数据库设计的方法与步骤:
①.获得对企业的了解(需求分析);
②.标识主要的数据对象(实体、属性、联系);
③.用ER图画出数据对象(初步ER图);
④.求解逻辑数据类型(处理联系、去掉冗余);
⑤.确定属性的细则(数据类型);
⑥.通过规范化来修正逻辑模型;
⑦.用SQL的DDL将逻辑模型转换成物理的DB模式。
二.Informix-4gl的语法规则
1.程序体结构:
DATABASE
GLOBALS###定义全局变量
DEFINE变量名1变量类型,
变量名n变量类型
ENDGLOBALS或GLOBALS“glob.4gl”
MAIN
DEFINE变量名1变量类型,
变量名n变量类型
OPTIONSPROMPTLINE1,
ERRORLINE24,
MESSAGELINE24,
COMMENTLINE24,
FORMLINE4,
MENULINE4,
nextkeycontrol-n,
previouskeycontrol-p,
deletekeycontrol-o,
insertkeycontrol-i,
ACCEPTKEYINTERRUPT,###使用ESC键无效
INPUTWRAP###按接受键后存入
DEFERINTERRUPT###防止非法中断
setisolationtodirtyread
setlockmodetowait5
whenevererrorcontinue###遇到错误继续执行
callstartlog(“slif_err.log”)
....(其它程序语句)
....(用户函数)
ENDMAIN
2.程序的具体语法:
①.命令行参数:
arg_val[0]:表示命令本身
arg_val[1]:表示命令行参数1
arg_val[n]:表示命令行参数n
sum_args():测试命令行参数的总个数
②.程序变量:
除serial类型外,其余均可为数据库字段类型,
原文转自:www.ltesting.net