亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
123下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 30726 | 回復(fù): 22
打印 上一主題 下一主題

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2003-09-01 15:43 |只看該作者 |倒序?yàn)g覽
第一章   Informix環(huán)境變量的設(shè)定

一.環(huán)境范例:

變 量 名 稱
變    量    說(shuō)    明

DBDELIMITER
指定由dbload在卸出數(shù)據(jù)文件中使用的字段定界符

DBDATE
指定在DB中想要使用的日期格式(Y4MD/,MDY4-)

DBEDIT
指定在程序員環(huán)境中想要使用的文本編輯器(vi)

DBLANG
指定在程序中所使用消息文件的存放目錄

DBMONEY
指定在DB中想要使用的貨幣格式

DBPATH
指定DB與其它相應(yīng)文件的搜索路徑

DBPRINT
指定計(jì)算機(jī)的打印程序

DBSRC
指定程序調(diào)試階段文件的搜索路徑

DBTEMP
指定臨時(shí)文件的存放目錄

INFORMIXDIR
指定Informix文件的存放目錄(/usr/informix)

INFORMIXSERVER
指定Informixr的數(shù)據(jù)庫(kù)服務(wù)器名稱

FORMDIR
指定Informix屏幕格式文件的存放路徑

DBNLS
指定Informix傳輸漢字(DBNLS=2)

LANG
指定Informix可顯示漢字(LANG=english.8859)

ONCONFIG
指定Informix-Online的配置文件(onconfig.life)

PATH
指定Informix可執(zhí)行文件的搜索路徑

TERM
指定Informix的終端類型(TERM=vt100)

TERMCAP
指定Informixr的終端類型文件


  

二.環(huán)境范例:

.profile (環(huán)境變量的等號(hào)前后不得為空格)

stty -istrip -isig (防止用戶非法中斷)

INFORMIXDIR=/usr/informix

INFORMIXSERVER=ld420501_tcp

ONCONFIG=onconfig.life

PATH=$PATHINFORMIXDIR/binHOME/binHOME/formHOME/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

export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH DBPATH FORMDIR DBDATE LANG

export DBLANG DBNLS TERMCAP TERM

環(huán)境變量的設(shè)置文件中還可加入其它Shell語(yǔ)句

  

  

第二章  Informix產(chǎn)品線及DB應(yīng)用開(kāi)發(fā)工具簡(jiǎn)介

  

一.Informix(英孚美)產(chǎn)品線簡(jiǎn)介(三大類):

  1.數(shù)據(jù)庫(kù)服務(wù)器(Database Server):

    ①.ODS (Informix-Online Dynemic Server)

       聯(lián)機(jī)動(dòng)態(tài)服務(wù)器,多線索,多性能的DB server(數(shù)據(jù)庫(kù)服務(wù)器)

    ②.XPS (Informix-Online Extended Parallel Server)

       將DSA擴(kuò)展至松耦合或非共享的計(jì)算體系結(jié)構(gòu),動(dòng)態(tài)可申縮性體系結(jié)構(gòu)(Dynemic Scerable Architerta),適用于大型數(shù)據(jù)庫(kù)的應(yīng)用,并行SQL操作。

    ③.IUS (Informix-Universbl Server)

       處理豐富而復(fù)雜的數(shù)據(jù)而設(shè)計(jì),并用Datablade模塊技術(shù),用來(lái)存儲(chǔ)和檢索豐富的多媒體Data及其他復(fù)雜的插入或?qū)ο髷U(kuò)展模塊。

  

  2.應(yīng)用開(kāi)發(fā)工具:

    ①.Informix-NERERA 適用于關(guān)鍵性業(yè)務(wù)的C/S(客戶機(jī)/服務(wù)器)模式,開(kāi)放性,圖形化面向?qū)ο蟮拈_(kāi)發(fā)環(huán)境。             └→ Client/Server Model

    ②.Informix-4GL    適用于各種類型業(yè)務(wù)的啞終端操作方式,適用性廣,開(kāi)發(fā)方便,可維護(hù)性好,功能強(qiáng)大,無(wú)圖形功能,用戶界面不夠友好。

    ③.Informix-SQL    符合國(guó)際標(biāo)準(zhǔn)的SQL語(yǔ)言,具有通用性,DDL與DML合為一體,高度的非過(guò)程化,分為嵌入式和交互式兩種形式,具有數(shù)據(jù)控制,訪問(wèn)功能。

    ④.Informix-ESQL/C 把SQL嵌入C語(yǔ)言提供實(shí)現(xiàn)SQL語(yǔ)言的目標(biāo)函數(shù)庫(kù),利用宿主程序完成一個(gè)應(yīng)用的過(guò)程。

3.連接工具:

   c4gl <*.4gl *.c *.ec *.o>; -c,o,s <OBJ>;

   └→ 4gl 源程序文件的編譯,連接生成目標(biāo)文件或可執(zhí)行文件

   esql <*.ec *.c *.o>;       -c,o   <OBJ>;

   └→ esql源程序文件的編譯,連接生成目標(biāo)文件或可執(zhí)行文件

  

   cc   <*.c *.o>;            -c,o   <OBJ>;

   └→ c語(yǔ)言源程序文件的編譯,連接生成目標(biāo)文件或可執(zhí)行文件

  

二.SQL(Structured Query Language)簡(jiǎn)介:

1.SQL(結(jié)構(gòu)化查詢語(yǔ)言)的主要特點(diǎn)RDB Server 關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器)

    ①.一體化DL與DML合為一體.

    ②.高度非過(guò)程化:what to do ,not how to do用戶使用起來(lái)簡(jiǎn)單方便.

    ③.具有SQL交互式與SQL嵌入式兩種形式.

  

2.SQL語(yǔ)言的分類:

    ①.DDL (數(shù)據(jù)定義語(yǔ)言):用來(lái)創(chuàng)建,更改,刪除數(shù)據(jù)庫(kù)基表視圖.

    ②.DML (數(shù)據(jù)操縱語(yǔ)言):對(duì)DB中的數(shù)據(jù)進(jìn)行查詢或增刪改操作.

    ③.DCL (數(shù)據(jù)控制訪問(wèn)語(yǔ)言):對(duì)存取權(quán)根的控制,授權(quán)和回收,游標(biāo)語(yǔ)句,動(dòng)態(tài)管理語(yǔ)句,數(shù)據(jù)完整性語(yǔ)句,查詢優(yōu)化語(yǔ)句,事務(wù)處理語(yǔ)句.

  

三.Stores7,Dbaccess,Isql,I4gl,Upscol等DBMS實(shí)用工具:

1.$dbaccessdemo7  [DBname]      [with log] <Retuen>;

    └→創(chuàng)建范例DB  └→數(shù)據(jù)庫(kù)名  └→缺省不帶系統(tǒng)日志

  

2.$dbaccess <Retuen>;

    └→捆綁在Informix-Online DB Server上的一套DBMS實(shí)例程序,可以做到:

   ①.利用該工具可以做到創(chuàng)建和刪除數(shù)據(jù)庫(kù).

   ②.查詢數(shù)據(jù)庫(kù)中各種信息,編輯使用SQL語(yǔ)句.

   ③.創(chuàng)建,更改,刪除數(shù)據(jù)庫(kù)基表.

   ④.增加,刪除,修改數(shù)據(jù)庫(kù)中原始記錄.

   ⑤.從OS(操作系統(tǒng))文件中裝載數(shù)據(jù)到數(shù)據(jù)庫(kù)中.

   ⑥.將數(shù)據(jù)庫(kù)中的數(shù)據(jù)卸出到一個(gè)OS(操作系統(tǒng))文件中.

   ⑦.創(chuàng)建回收權(quán)限.

   ⑧.利用該工具可以創(chuàng)建,刪除,修改Procedure(過(guò)程)。

  

3.$isql <Retuen>;

    └→捆綁在Informix-Online DB Server上的一套DBMS實(shí)例程序,可以做到:

   ①.利用該工具可以做到創(chuàng)建和刪除數(shù)據(jù)庫(kù).

   ②.查詢數(shù)據(jù)庫(kù)中各種信息,編輯使用SQL語(yǔ)句.

   ③.創(chuàng)建,更改,刪除數(shù)據(jù)庫(kù)基表.

   ④.增加,刪除,修改數(shù)據(jù)庫(kù)中原始記錄.

   ⑤.從OS(操作系統(tǒng))文件中裝載數(shù)據(jù)到數(shù)據(jù)庫(kù)中.

   ⑥.將數(shù)據(jù)庫(kù)中的數(shù)據(jù)卸出到一個(gè)OS(操作系統(tǒng))文件中.

   ⑦.創(chuàng)建回收權(quán)限.

   ⑧.利用該工具可以創(chuàng)建,刪除,修改,編譯屏幕表格文件(*.per),并運(yùn)行.

   ⑨.利用該工具可以創(chuàng)建,刪除,修改,編譯報(bào)表文件(*.ace),并運(yùn)行.

  

4.$i4ql <Retuen>;

    └→捆綁在Informix-Online DB Server上的一套Informix-4GL實(shí)例程序,可以做到:

   ①.利用該工具可以做到創(chuàng)建和刪除數(shù)據(jù)庫(kù).

   ②.查詢數(shù)據(jù)庫(kù)中各種信息,編輯使用SQL語(yǔ)句.

   ③.創(chuàng)建,更改,刪除數(shù)據(jù)庫(kù)基表.

   ④.增加,刪除,修改數(shù)據(jù)庫(kù)中原始記錄.

   ⑤.從OS(操作系統(tǒng))文件中裝載數(shù)據(jù)到數(shù)據(jù)庫(kù)中.

   ⑥.將數(shù)據(jù)庫(kù)中的數(shù)據(jù)卸出到一個(gè)OS(操作系統(tǒng))文件中.

   ⑦.授權(quán)和回收權(quán)限.

   ⑧.利用該工具可以創(chuàng)建,修改,編譯屏幕表格文件(*.per).

   ⑨.利用該工具可以創(chuàng)建,刪除,修改,編譯,運(yùn)行Informix-4GL源程序文件(*.4gl).

  

5.$upscol <Retuen>;

    └→捆綁在Informix-Online DB Server上的一套屏幕屬性實(shí)例程序,可以做到:

   ①.利用該工具可以調(diào)整屏幕字段的數(shù)據(jù)屬性和顯示屬性.

   ②.調(diào)整屏幕字段的前背顏色,下劃線,反顯等.

   ③.調(diào)整屏幕字段的數(shù)據(jù)格式,消息,限制輸入等.

  

6.$form4gl <文件名>; <Return>;

   ①.編譯已存在的屏幕表格文件:

      form4gl    <*?*.per>;

                  └→被編譯的屏幕表格文件名

   ②.為指定數(shù)據(jù)庫(kù)中的表格生成默認(rèn)屏幕格式文件:

      form4gl -d <filename>;    <DB Server>;   <Table>;

                  └→生成文件  └→數(shù)據(jù)庫(kù)名  └→表名

  

7.$c4gl <*.4gl>; <Return>;

   使用方法: c4gl [-Vaeqcz] [-phase 12345] [-ansi] [-anyerr]

                  [-globcurs | -localcurs] [-nokeep | -keep]

                  [-static | -shared] [-nolinenos | -linenos] [-otherargs]

                  [source.4gl ...] [othersrc.c ...] [otheresql.ec ...]

                  [otherobj.o ...] [yourlib.a ...] [-o outfile]

   開(kāi)關(guān)參數(shù)       使用說(shuō)明

    -V            Display version of 4gl only

    -a            Do array bounds checking

    -e            Preprocess only, no compilation or linking

    -q            Quiet mode for i4glc1 [phase 1]

    -c            Preprocess & compile only, no linking

    -z            Allow variable number of arguments to functions

    -phase 12345  Process only the phase that indicated

    -ansi         Check SQL statements for ANSI compliance

    -anyerr       Set status variable after expressions

    -globcurs     Make cursor definitions global to program

    -localcurs    Make cursor definitions local to module (default)

    -nokeep       Delete intermediate .4ec, .ec, and .c files (default)

    -keep         Keep intermediate .4ec, .ec, and .c files

    -linenos      Produce #line numbering in .c file (default)

    -nolinenos    Suppress #line numbering in .c file

    -static       Use static libraries

    -shared       Use dynamic linking and shared libraries

    -otherargs    Other arguments are passed to the C compiler

    -o            Next argument is name of executable

  

8.$esql <*.ec>; <Return>;

   使用方法: esql [-e] [-static] [-shared] [-esqlcargs] [-otherargs]

                  [-o outfile] [-libs] esqlfile.ec

                  [othersrc.c...] [otherobj.o...] [-lyourlib...]

   開(kāi)關(guān)參數(shù)       使用說(shuō)明

    -e            Preprocess only, no compilation or linking

    -static       Use informix static libraries.

    -shared       Use informix shared libraries ( default is shared).

    -esqlcargs    esqlc arguments (-g, -G, -nln, -Ipathname, -nowarn, -V, -ansi,-xopen, -local, -log, -EDname, -EUname, -icheck)

    -otherargs    Other arguments are passed to cc

    -o            Next argument is program name

-libs         Display the list of libraries used by esql at link time.

  

9.dbexport,dbimport,dbschema,ontape數(shù)據(jù)庫(kù)后備工具:

   dbexport以文本形式卸出數(shù)據(jù)庫(kù)文件(Table、View、Procedure、Trigger等)

   dbexport <Dbname>; 或 dbexport <Dbname>; –t /dev/rStp0 –s –b

   dbimport以文本形式上載數(shù)據(jù)庫(kù)文件(Table、View、Procedure、Trigger等)

   dbimport <Dbname>; -d workdbs –l buffered

   dbschema 以文本形式卸出數(shù)據(jù)庫(kù)的建表、建過(guò)程的SQL文件

   dbschema –d <Dbname>; -t <Tabname|all>; -ss <Filename>; 卸出指定表或所有表

   dbschema –d <Dbname>; -f <rocname|all>; -ss <Filename>; 卸出指定過(guò)程或所有過(guò)程

   ontape 數(shù)據(jù)庫(kù)系統(tǒng)備份工具

   ontape –s –B <Dbname>; 為指定數(shù)據(jù)庫(kù)恢復(fù)Buffered日志

  

  

第三章   Informix-SQL Version 6.05.UD1 應(yīng)用

  

一.有關(guān)數(shù)據(jù)庫(kù),基表,索引的創(chuàng)建與刪除

  1.語(yǔ)法約定:

    <......>;     表示必選項(xiàng)

    {......}     表示必選其中項(xiàng)

    [......]     表示可選項(xiàng)

    (......)     表示語(yǔ)句的一部分

       |         表示多項(xiàng)選一

    大寫(xiě)[A-Z]    表示Informix的保留字

    小寫(xiě)[a-z]    表示Informix的庫(kù)名,表名,字段名,變量名

  

2.數(shù)據(jù)庫(kù)(Database):

   ①.創(chuàng)建一個(gè)DB:

      CREATE DATABASE      <DB name>;     [WITH BUFFERED LOG]

         └─┴→語(yǔ)法關(guān)鍵字  └→數(shù)據(jù)庫(kù)名     └→是否帶數(shù)據(jù)庫(kù)日志

      創(chuàng)建一個(gè)DB同時(shí)也打開(kāi)了這個(gè)DB

   ②.數(shù)據(jù)庫(kù)命名規(guī)則:

      ㈠.數(shù)據(jù)庫(kù)名不超過(guò)10個(gè)字符.

      ㈡.必須以字母打頭,其余部分可以是字母,數(shù)字,下劃線的任意組合.

      ㈢.在同一數(shù)DB Server(據(jù)庫(kù)服務(wù)器)中數(shù)據(jù)庫(kù)名應(yīng)具有唯一性.

      ㈣.數(shù)據(jù)庫(kù)名不得是Informix的保留字

  

3.數(shù)據(jù)庫(kù)基表(Table):

   ①.創(chuàng)建一個(gè)DB Table:

      DATABASE     <DB name>;   →數(shù)據(jù)庫(kù)名

      CREATE TABLE <TB name>;   →數(shù)據(jù)庫(kù)表名

      字段名稱  字段類型      字段說(shuō)明

     (column0  serial(1)   , #有序整數(shù)型,其初始值為1

       column1  integer     , #從-2147483647到+2147483647之間的整數(shù)

       column2  smallint    , #從-32767到+32767之間的整數(shù)

       column3  float default 0.00 not null,#雙精度浮點(diǎn)數(shù)

       column4  smallfloat  , #單精度浮點(diǎn)數(shù)

       column5  decimal(m,n), #具有可定義精度的數(shù)字(左邊m-n位,右邊n位)

       column6  money(m,n)  , #與decimal型相同(貨幣型)

       column7  date        , #日期型

       column8  datetime year to second,#日期時(shí)間型(1999-09-07 09:52:52)

       column9  char(n)     , #字符型  n表示字符長(zhǎng)度

       column10 varchar(n)  , #字符型(最后一個(gè)字段無(wú)逗號(hào))

       check (字段名 in(值1,值2,值3) constraint 名稱,

       primary key(字段1,字段2,字段n) constraint 名稱 ##主鍵唯一,非空

     );

  

數(shù) 據(jù) 類 型
字   段   長(zhǎng)   度

CHAR
語(yǔ)句中定義的長(zhǎng)度

VARCHAR
語(yǔ)句中定義的長(zhǎng)度

SMALLINT
2個(gè)字節(jié)

INTEGER
4個(gè)字節(jié)

SMALLFLOAT
4個(gè)字節(jié)

FLOAT
8個(gè)字節(jié)

SERIAL
4個(gè)字節(jié)

DATE
4個(gè)字節(jié)

DATETIME
8個(gè)字節(jié)(Year to Second),其它為4

DECIMAL(m,n)
依賴精度(m/2+1四舍五入到下一整數(shù))

MONEY(m,n)
依賴精度(m/2+1四舍五入到下一整數(shù))


  

   ②.基表命名規(guī)則:

      ㈠.表名最多不超過(guò)18個(gè)字符,除此以外與數(shù)據(jù)庫(kù)命名規(guī)則雷同.

      ㈡.必須以字母打頭,其余部分可以是字母,數(shù)字,下劃線的任意組合.

      ㈢.在同一數(shù)據(jù)庫(kù)中表名應(yīng)具有唯一性.

      ㈣.表名不得是Informix的保留字.

      ㈤.表中字段名不得超過(guò)18個(gè)字符,定義like table.* 必須保證前8個(gè)字符的唯一性。

      ㈥.表中字段名不得重復(fù)(不區(qū)分大小寫(xiě))。

  

4.索引(Index):

   ①.索引分類:

      ㈠.單字段索引:提高查詢和分類操作效率。

      ㈡.多字段索引:加快幾個(gè)字段分類處理的速度。

      索引僅是加快數(shù)據(jù)分類處理的速度。

   ②.索引規(guī)則:

      ㈠.直到表中有上百條記錄時(shí)才加索引.

      ㈡.經(jīng)常用于檢索和排序操作的字段.

      ㈢.用于連接表和使用頻率高的字段。

      ㈣.不要對(duì)含有大量重復(fù)值的字段加索引,索引字段中相同的值不得出現(xiàn)多于65536次

      ㈤.不得對(duì)多于8個(gè)字段的組加索引。

      ㈥.不得對(duì)長(zhǎng)度超過(guò)120字節(jié)的一個(gè)字段或一組字段加索引。

      ㈦.索引命名規(guī)則與表名命名規(guī)則相似。

   ③.創(chuàng)建索引:

      CREATE [UNIQUE|DISTINCT] INDEX <IDX name>;  →索引名

                └→唯一索引      ON <TB  name>;  →表名

                                     (column1 [DESC],column2,..,columnn)

                                               └→降序索引

5.視圖(View):

    ①.視圖定義:視圖是數(shù)據(jù)庫(kù)上動(dòng)態(tài)的窗口而不是靜態(tài)的狀況,并且是以數(shù)據(jù)庫(kù)表的形式出現(xiàn)在數(shù)據(jù)庫(kù)中,授權(quán)與增、刪、改操作與基表的操作一致。

    ②.視圖命名規(guī)則:

      ㈠.表名最多不超過(guò)18個(gè)字符,除此以外與數(shù)據(jù)庫(kù)基表的命名規(guī)則雷同.

      ㈡.必須以字母打頭,其余部分可以是字母,數(shù)字,下劃線的任意組合.

      ㈢.在同一數(shù)據(jù)庫(kù)中視圖名應(yīng)具有唯一性.

      ㈣.視圖名不得是Informix的保留字.

      ㈤.視圖中字段名不得超過(guò)18個(gè)字符,必須保證前8個(gè)字符的唯一性。

      ㈥.視圖中字段名不得重復(fù)(不區(qū)分大小寫(xiě)),應(yīng)具有唯一性。

③.視圖任務(wù):

      ㈠.在數(shù)據(jù)庫(kù)上為不同的用戶提供不同的數(shù)據(jù)窗口,一個(gè)單獨(dú)的視圖可以包含來(lái)自不同的表的字段(字段不得同名)。

      ㈡.限制某些敏感數(shù)據(jù)的存取,只允許用戶查看聚合信息。

      ㈢.允許用戶象修改、插入和刪除數(shù)據(jù)庫(kù)中如同在視圖中出現(xiàn)那樣被組織起來(lái)的數(shù)據(jù)

④.視圖與基表的區(qū)別:

      ㈠.不能利用視圖取代格式說(shuō)明文件中的表。

      ㈡.不能在視圖上建立索引。

      ㈢.某些條件下不能通過(guò)視圖更新或刪除看到的數(shù)據(jù)。

      ㈣.不能通過(guò)ROWID存取表。

    ⑤.創(chuàng)建與刪除視圖:

       CREATE VIEW <View Name>;[(字段1,...,字段n)]

                       └→視圖名稱

         AS SELECT <標(biāo)準(zhǔn)Select 語(yǔ)句>; →不得使用UNION操作符

           [WITH CHECK OPTION] →輸入與修改是否滿足SELECT語(yǔ)句條件

  

6.刪除數(shù)據(jù)庫(kù)、表、索引、視圖:

①.       刪除數(shù)據(jù)庫(kù):drop       <DB  name>;

②.       刪除表    :drop table <TB  name>;

③.       刪除索引  :drop index <IDX name>;

④.       刪除視圖  :drop view  <VEW name>;

      刪除數(shù)據(jù)庫(kù)前必須關(guān)閉此數(shù)據(jù)庫(kù),刪除數(shù)據(jù)庫(kù)同時(shí)也刪除了該數(shù)據(jù)庫(kù)的所有表、索引、視圖。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2003-09-01 15:44 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

二.SQL實(shí)際應(yīng)用:

1.INSERT 語(yǔ)句:(向數(shù)據(jù)庫(kù)的表中插入一條行記錄)

INSERT INTO <TB name>;(column1,comumn2,...,comumnn)

               └→表名        └→字段名表 →缺省為所有字段

     VALUES (value_list)→值列表

2.DELETE 語(yǔ)句:(從數(shù)據(jù)庫(kù)的表中刪除若干條滿足條件的行記錄)

DELETE FROM  <TB name>;  (WHERE 條件列表) →缺省為所有行記錄

                └→表名

  

  3.UPDATE 語(yǔ)句:(修改數(shù)據(jù)庫(kù)表中滿足條件的若干條行記錄)

    UPDATE STATISTICS (TB name)→為指定數(shù)據(jù)庫(kù)表更統(tǒng)計(jì)(缺省為所有)

                       └→表名

UPDATE       <TB name>;  SET  <字段1= 值1,字段n= 值n>;

                 └→表名

                        (WHERE 條件列表)  →缺省為所有行記錄

  

UPDATE       <TB name>;  SET  <字段列表>; = <值列表>;

                 └→表名

                        (WHERE 條件列表)  →缺省為所有行記錄

  

UPDATE       <TB name>;  SET  <字段.*>;   = <記錄.*>;

                 └→表名

                        (WHERE 條件列表)  →缺省為所有行記錄

  

  4.SELECT 語(yǔ)句:(從一數(shù)據(jù)庫(kù)表中選擇滿足條件的行記錄)

SELECT <column1,column2,...,columnn>;     →*表示所有字段

(INTO <程序變量列表>;)或(INTO TEMP <臨時(shí)表>;)

  FROM <TB name>; [表別名]               →數(shù)據(jù)庫(kù)表名

(WHERE <條件列表>                      →缺省為所有行記錄

ORDER BY [column1,column2,...,column8][DESC]→排序(可選)可用1-8代替字段

GROUP BY [column1,column2,...,columnn]      →分組(可選)可用1-8代替字段

[HAVING <條件>;]                             →為組提供一個(gè)或多個(gè)限制條件

INTO TEMP <臨時(shí)表>; (可選)

  

  5.多表連接(Join)的SELECT語(yǔ)句從多個(gè)數(shù)據(jù)庫(kù)表中選擇滿足條件的行記錄)

SELECT <表1.字段>;,<表2.字段>;,<表2.字段>;,<表3.字段>;,...,<表n.字段>;

   FROM <表1>; [別名1],<表2>; [別名2],<表3>; [別名3],...,<表n>; [別名n]

  WHERE <條件列表>;                        →WHERE子句不能省略

  ORDER BY [1,2,3,4,5,6,7,8][DESC]→排序,1-8表示字段在SELECT中出現(xiàn)的順序。

  GROUP BY [column1,column2,...,columnn]  →分組(可選)

   [HAVING <條件>;]                        →為組提供一個(gè)或多個(gè)限制條件

   INTO TEMP <臨時(shí)表>; (將查詢結(jié)果放到臨時(shí)表中)

    當(dāng)在WHERE子句中建立多表連接時(shí),表與表之間至少有一個(gè)字段用于連接。連接的功能是建立一個(gè)臨時(shí)組合的表,在對(duì)應(yīng)表中符合連接條件的記錄被連接形成一個(gè)記錄。

  

  6.SELECT語(yǔ)句中的聚合函數(shù)和日期函數(shù):

語(yǔ)  法                   功       能

COUNT(*)              滿足條件的記錄個(gè)數(shù)

COUNT(DISTINCT *)    去除重復(fù)項(xiàng)后滿足條件的記錄個(gè)數(shù)

      SUM(DISTINCT x)     滿足條件字段x的總和

      AVG(DISTINCT x)     滿足條件字段x的平均值

      MAX(x)              滿足條件字段x的最大值

      MIN(x)              滿足條件字段x的最小值

     DATE()              為表達(dá)式返回一個(gè)DATE類型的值

      DAY()              返回DATE類型表達(dá)式月份的日期(多少號(hào))

      MDY()              分別代表月、日、年的整數(shù)返回一個(gè)DATE類型的值

    MONTH()              返回DATE類型表達(dá)式的月份

  WEEKDAY()              返回DATE類型表達(dá)式星期的整數(shù)0-6(星期日至星期六)

     YEAR()              返回DATE類型表達(dá)式的年份

  

  7.SELECT語(yǔ)句中的算術(shù)操作符:

符號(hào)           功       能

+             加法

-             減法

*             乘法

/             除法

mod            取模(取余數(shù))

**             冪(乘方)

  

  8.WHERE子句的詳細(xì)說(shuō)明:

①.   關(guān)系操作符:

操作符         功     能

       = 或 ==        等于

       !=或 <>;        不等于

       >;              大于

       >;=             大于或等于

       <              小于

       <=             小于或等于

②.   AND 和 OR(與、或)

  

③.   [NOT] BETWEEN ...AND...([不]在...與...之間)

④.   [NOT] IN (值1,值2,值3,。。。,值n) 所期望的值

⑤.   [NOT] MATCHES 模式匹配:

MATCHES “字符值”

  *   表示零個(gè)或多個(gè)字符

  ?   表示單個(gè)字符

[...] 表示方括號(hào)中的任意字符

[^..] 表示除此之外的任意字符

[A-Z] 表示從A到Z的任意字符

  \   轉(zhuǎn)換下一個(gè)字符的特殊含義

⑥.   [NOT] LIKE 模式匹配:(象...一樣)

LIKE “字符值”

  %   表示零個(gè)或多個(gè)字符

  —   表示單個(gè)字符

⑦.   IS [NOT] NULL 表示空值或非空值:

⑧.   子查詢:

WHERE 表達(dá)式 關(guān)系運(yùn)算符{ALL|ANY|SOME}(SELECT 語(yǔ)句)

WHERE 表達(dá)式 [NOT] IN(SELECT 語(yǔ)句)

WHERE [NOT] EXISTS(SELECT 語(yǔ)句)

         ALL 表示子查詢可返回0個(gè),1個(gè)或多個(gè)值,并對(duì)每個(gè)返回值比較為真時(shí)則條件為真

         ANY 表示子查詢可返回0個(gè),1個(gè)或多個(gè)值,至少一個(gè)返回值比較為真時(shí)則條件為真

        SOME  ANY的別名

          IN 檢查表達(dá)式是否在由下面的SELECT語(yǔ)句返回的結(jié)果中

      EXISTS檢查其后的SELECT語(yǔ)句是否返回了任何一個(gè)記錄,返回記錄則條件為真

         NOT 對(duì)查找條件的真值取非

  

  

  9.SQL語(yǔ)句總述:

     SQL(結(jié)構(gòu)化的查詢語(yǔ)言)在我們的實(shí)際工作中起著舉足輕重的作用,符合國(guó)際通用標(biāo)準(zhǔn),功能強(qiáng)大、語(yǔ)句簡(jiǎn)潔、操作方便、使用靈活,能隨時(shí)從數(shù)據(jù)庫(kù)中進(jìn)行文本的上下載工作,通過(guò)使用視圖與臨時(shí)表來(lái)篩選數(shù)據(jù)則使我們的工作更加方便、有效,在SELECT語(yǔ)句中可以嵌入返回值的過(guò)程,從而進(jìn)一步提高工作效率。

  

  

第四章   關(guān)系數(shù)據(jù)庫(kù)Informix-4GL程序設(shè)計(jì)

  

一.關(guān)系數(shù)據(jù)庫(kù)程序設(shè)計(jì)的關(guān)鍵和方法:

  1.成功設(shè)計(jì)一個(gè)關(guān)系數(shù)據(jù)庫(kù)的關(guān)鍵因素:

    ①.深入廣泛、了解企業(yè)內(nèi)部組織機(jī)構(gòu)及需求;

    ②.始終保持與最終用戶交互、聯(lián)系;

    ③.設(shè)計(jì)過(guò)程中要采用結(jié)構(gòu)化的開(kāi)發(fā)方法,便于維護(hù);

    ④.要用ER圖表示數(shù)據(jù)結(jié)構(gòu)模型。

  2.結(jié)構(gòu)化的開(kāi)放方法交整個(gè)應(yīng)用的開(kāi)發(fā)周期劃分成階段:

    ①.系統(tǒng)開(kāi)發(fā)的可行性報(bào)告;

    ②.程序的功能需求;

    ③.技術(shù)設(shè)計(jì)(系統(tǒng)規(guī)格說(shuō)明書(shū));

④.編程及測(cè)試(源程序代碼清單);

    ⑤.用戶培訓(xùn)、實(shí)現(xiàn)(用戶手冊(cè))。

    ⑥.程序的維護(hù)與升級(jí)。

  3.數(shù)據(jù)庫(kù)設(shè)計(jì)的方法與步驟:

    ①.獲得對(duì)企業(yè)的了解(需求分析);

    ②.標(biāo)識(shí)主要的數(shù)據(jù)對(duì)象(實(shí)體、屬性、聯(lián)系);

    ③.用ER圖畫(huà)出數(shù)據(jù)對(duì)象(初步ER圖);

④.求解邏輯數(shù)據(jù)類型(處理聯(lián)系、去掉冗余);

    ⑤.確定屬性的細(xì)則(數(shù)據(jù)類型);

    ⑥.通過(guò)規(guī)范化來(lái)修正邏輯模型;

⑦.用SQL的DDL將邏輯模型轉(zhuǎn)換成物理的DB模式。

  

二.Informix-4gl的語(yǔ)法規(guī)則:

1.程序體結(jié)構(gòu):

DATABASE <DB Name>;

GLOBALS  ###定義全局變量

DEFINE  變量名1  變量類型,

        變量名n  變量類型

END GLOBALS或GLOBALS “glob.4gl”

MAIN

        DEFINE  變量名1  變量類型,

        變量名n  變量類型

    OPTIONS  PROMPT  LINE  1,

             ERROR   LINE 24,

             MESSAGE LINE 24,

             COMMENT LINE 24,

             FORM    LINE  4,

             MENU    LINE  4,

             next     key control-n,

             previous key control-p,

             delete   key control-o,

             insert   key control-i,   

             ACCEPT KEY INTERRUPT,### 使用ESC鍵無(wú)效

             INPUT WRAP           ### 按接受鍵后存入

    DEFER    INTERRUPT            ### 防止非法中斷

    set  isolation to dirty read

    set  lock mode to wait 5

    whenever error continue       ### 遇到錯(cuò)誤繼續(xù)執(zhí)行

    call startlog(“slif_err.log”)

    ....(其它程序語(yǔ)句)

    ....(用戶函數(shù))

END MAIN

  2.程序的具體語(yǔ)法:

   ①.命令行參數(shù):

      arg_val[0]:表示命令本身

      arg_val[1]:表示命令行參數(shù)1

      arg_val[n]:表示命令行參數(shù)n

      sum_args():測(cè)試命令行參數(shù)的總個(gè)數(shù)

   ②.程序變量:

      除serial類型外,其余均可為數(shù)據(jù)庫(kù)字段類型。

  

第五章  Informix-SPL(過(guò)程)語(yǔ)法詳解

  

     Informix數(shù)據(jù)庫(kù)用戶一般都熟悉的使用SQL語(yǔ)句進(jìn)行簡(jiǎn)單的查詢和統(tǒng)計(jì),而在Informix-Online的數(shù)據(jù)庫(kù)服務(wù)器中提供了用結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)句和流程控制存儲(chǔ)語(yǔ)言SPL創(chuàng)建存儲(chǔ)例程,以減少I(mǎi)nformix的處理。存儲(chǔ)例程是SQL語(yǔ)句和SPL的集合。它們存放在數(shù)據(jù)庫(kù)中,SQL語(yǔ)句會(huì)被分析.優(yōu)化,在例程的執(zhí)行中,高速緩存中會(huì)有一執(zhí)行規(guī)劃,使后續(xù)操作的執(zhí)行速度很快。而單獨(dú)的SQL語(yǔ)句只有在執(zhí)行時(shí)才會(huì)被優(yōu)化,并且存儲(chǔ)例程可以被不同的開(kāi)發(fā)工具調(diào)用(4GL 、ESQL/C、POWERBUILDER.DELPHI),在SELECT語(yǔ)句中也調(diào)用過(guò)程。例程調(diào)試簡(jiǎn)單,不必重新編譯應(yīng)有軟件包。在例程創(chuàng)建時(shí)Informix查詢處理器會(huì)分析它,并產(chǎn)生一執(zhí)行規(guī)劃,永久存放于SPROCEDURES.SYSPROBODY.和SYSPROPLAN中,其后例程按此規(guī)劃執(zhí)行,由于大部分查詢處理已經(jīng)完成,存儲(chǔ)例程可以在瞬間執(zhí)行完畢。由于存儲(chǔ)例程所具有的優(yōu)越性,它已成為進(jìn)行Informix數(shù)據(jù)庫(kù)核心開(kāi)發(fā)的有力工具,掌握它對(duì)Informix的開(kāi)發(fā)人員有積極意義,現(xiàn)將我在實(shí)際工作中使用的語(yǔ)法和例子詳解于下,疏漏和錯(cuò)誤請(qǐng)來(lái)信指教。

1.創(chuàng)建和執(zhí)行例程

  ①.創(chuàng)建例程語(yǔ)法:

      CRAETE PROCEDURE [OWNER.]PROCEDURE_NAME (參數(shù)1  參數(shù)類型=[DEFAULT], 參數(shù)2  參數(shù)類型=[DEFAULT],參數(shù)n  參數(shù)類型=[DEFAULT])

                    RETURNING 值1類型,值2類型,值n類型;

      <......>;語(yǔ)句體;      END RPOCEDURE

例程大小不可超過(guò)64K,這包括所有的SQL.SPL.空格.跳格符,例程名最多18個(gè)字符,并在數(shù)據(jù)庫(kù)中唯一存在,語(yǔ)句間用";"分隔,例程只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建,例程創(chuàng)建后是一標(biāo)準(zhǔn)

執(zhí)行模板塊,可在不同的應(yīng)有中對(duì)其調(diào)用,這對(duì)開(kāi)發(fā)不同版本的應(yīng)用將更為便利。例:

create procedure "test".upwage()

define rev_rev_item_code varchar(2,0);

define rev_p_rev_date date;

define acc_rec_prem_no decimal(8,2);define rev_p_rev_amt  decimal(10,2);define rev_I_info_branch varchar(6,0);define rev_I_info_appl_no decimal(8,0);define rev_I_info_date date;define rev_o_rev_date date;

define rev_o_rev_amt decimal(10,2);

define acc_ac_rev_amnt decimal(10,2);

define acc_rec_prem_date date;

begin work;

foreach cur_rev for select I_info_appl_branch,I_info_appl_no,I_info_date,

o_rev_date,o_rev_amt into rev_I_info_branch,

rev_I_info_appl_no,rev_I_info_date,rev_o_rev_date,                             rev_o_rev_amt from rev_rec_tbl where

(rev_item_code="S" ) and p_rev_date is null and

p_rev_amt=0 and (I_info_appl_no is not null or

I_info_date is not null);

select max(rec_prem_acc_no) into acc_rec_prem_no from rec_prem_acc where                                   I_info_appl_branch=rev_I_info_branch

and I_info_appl_no=rev_I_info_appl_no

and I_info_date=rev_I_info_date

and o_rev_date=rev_o_rev_date

and rev_item_code="S" and

ac_rev_amnt=rev_o_rev_amt;

select date(rec_prem_date) into acc_rec_prem_date

from rec_prem_acc where I_info_appl_branch=rev_I_info_branch

and I_info_appl_no=rev_I_info_appl_no

and I_info_date=rev_I_info_date

and o_rev_date=rev_o_rev_date

and rev_item_code="S" and

ac_rev_amnt=rev_o_rev_amt and

rec_prem_acc_no=acc_rec_prem_no ;

select ac_rev_amnt into acc_ac_rev_amnt

  from rec_prem_acc

where I_info_appl_branch=rev_I_info_branch

  and I_info_appl_no=rev_I_info_appl_no

  and I_info_date=rev_I_info_date

  and o_rev_date=rev_o_rev_date

  and rev_item_code="S"

  and rec_prem_acc_no=acc_rec_prem_no

  and ac_rev_amnt=rev_o_rev_amt;

if acc_ac_rev_amnt is null or acc_rec_prem_date is null then

   continue foreach;

end if;

update rev_rec_tbl

   set p_rev_date=acc_rec_prem_date,

       p_rev_amt =acc_ac_rev_amnt

where I_info_appl_branch=rev_I_info_branch

   and I_info_date=rev_I_info_date

   and I_info_appl_no=rev_I_info_appl_no

   and o_rev_date=rev_o_rev_date;

end foreach;

commit work;

end procedure;

  ②.執(zhí)行例程語(yǔ)法:

    A):在dbaccess中

       EXECUTE PROCEDURE DBNAME@SERVER_NAME:例程名(參數(shù)1,參數(shù)2,.....)用這種方法可對(duì)例程進(jìn)行調(diào)試。

    B):在Informix-4GL中

       PREPARE PREP STATTEMENT FROM "EXECUTE PROCEDURE DBNAME@SERVER_NAME:例程名(?,?,?,...)

       DECLARE P_CURS SURSOR FOR PREP STMT

       OPEN P_CURS USING 參數(shù)1,參數(shù)2,....

       FETCH P_CURS INTO 返回值1,返回值2,...

       CLOSE P_CURS

       當(dāng)應(yīng)用程序不支持EXECUT PROCEDURE語(yǔ)法,則需使用PREPARE命令,如INFORMIX-4GL中,而使用INFORMIX-NEWEAR則無(wú)此限制,需注意的是PREPARE語(yǔ)句中變量用?號(hào)代替,其個(gè)數(shù)要與例程的參數(shù)個(gè)數(shù)和類型一致,返回值也是一樣。

    C):在Informix-ESQL/C中

       EXEC SQL EXECUTE PROCEDURE 例程名(參數(shù)1,參數(shù)2,...) INTO (返回值1,返回值2,...)在EC5.0或更高版本可使用EXECUTE PROCEDURE 語(yǔ)法,在ESQL/C中宿主變量用于想存儲(chǔ)例程傳遞值,同時(shí)也接收返回值.

    D):在POWER BUILDER中

       DECLARE 邏輯名 PROCEDURE FOR 例程名(:參數(shù)1,:參數(shù)2:...) INTO :返回值1,:返回值2,..USING 事物名

       EXEC 例程名(:參數(shù)1,:參數(shù)2,.....)

       PB要求為例程制定邏輯名,以后的SQL語(yǔ)句將以邏輯名為準(zhǔn)指向后臺(tái)數(shù)據(jù)庫(kù)例程,當(dāng)例程即便沒(méi)有參數(shù)也必須有小擴(kuò)號(hào).

2.流程控制語(yǔ)言:

在過(guò)程中也提供了其他語(yǔ)言具備的流程控制語(yǔ)言,完成循環(huán)判斷和分類處理的能力,主要有:①.IF ....ELIF.....ELSE.....END IF例:

CRAETE PROCEDURE STR_COM(STR1 CHAR(20),STR2 CHAR(20))

RETURNING INT;

DEFINE REL INT;

IF STR1>;STR2 THEN  --當(dāng)STR1>;STR2 REL=1

LET REL=1;

ELIF STR2>;STR1 THEN --當(dāng)STR2>;STR1 REL=-1

LET REL=-1;

ELSE

LET REL=0;   --當(dāng)STR1=STR2 REL=0

END IF

RETUEN REL;

END PROCEDURE

當(dāng)IF的條件為一個(gè)SQL語(yǔ)句如SELECT時(shí)需用擴(kuò)號(hào),并且返回值為單值。

②.FOR .....END FOR

例:FOR INDEX IN (20 TO 30 STEP 2,100 TO 200 STEP 10)

   --執(zhí)行代碼

   END FOR

FOR的條件可以是變量,常量或一個(gè)SQL語(yǔ)句的返回值

③.WHILE.......END WHILE

當(dāng)WHILE的條件為T(mén)RUE時(shí)執(zhí)行WHILE后的語(yǔ)句,為FALSE退出循環(huán)。

例:WHILE I<10

    INSERT INTO TBB_1 VALUES(I);

    LET I=I+1;

    END WHILE;

④.FOREACH........END FOREACH

該語(yǔ)句較為特別FOREACH循環(huán)能夠聲明并打開(kāi)游標(biāo),讀取記錄行,并關(guān)閉游標(biāo).其完整語(yǔ)法:

FOREACH 游標(biāo)名 [WITH HOLD] SELECT 字段名 INTO 變量 FROM

   TABLE WHERE 條件 ;

END FOREACH

FOREACH EXECUTE PROCEDURE 例程名(參數(shù)1,參數(shù)2,..) INTO

  變量

END FOREACH

該循環(huán)中語(yǔ)句的執(zhí)行次數(shù)與SELECT 和 EXECUTE PROCEDURE語(yǔ)句返回的行數(shù)一樣多。如果FOREACH語(yǔ)句中包含一條EXECUTE PROCEDURE,則循環(huán)停止的條件為:

.執(zhí)行了不帶任何參數(shù)的RETURN語(yǔ)句

.執(zhí)行了END PROCEDURE

如果沒(méi)有返回行數(shù)據(jù),則不再執(zhí)行循環(huán)中的語(yǔ)句。存儲(chǔ)例程中不允許使用滾動(dòng)游標(biāo)。

當(dāng)使用WITH HOLD時(shí),更新游標(biāo)將放置更新鎖,使其他過(guò)程無(wú)法更新該行,直至事物完成,當(dāng)在FOREACH循環(huán)的語(yǔ)句塊中的UPDATE或DELETE有

WHERE CURRENT OF短語(yǔ),則存儲(chǔ)例程會(huì)自動(dòng)使用更新游標(biāo)

例1:BEGIN WORK;

     FOREACH CUR_1 FOR SELECT DATE INTO V_DATE FROM TABLE

     IF V_DATE IS NULL THEN

     DELETE FROM TABLE WHERE CURRENT OF CUR_1;

     END IF;

     END FOREACH;

     COMMIT WORK;

例2:FOREACH EXECUTE PROCEDURE BAR(10,20) INTO I

     INSERT INTO TABLE1 VALUES(I)

     END PROCEDURE

⑤.CONTINUE    適用語(yǔ)句( FOR WHILE FOREACH)   將執(zhí)行傳遞給下一次循環(huán)⑥.EXIT

   適用語(yǔ)句( FOR WHILE FOREACH)

   從循環(huán)中退出

   例:FOR J=1 TO 20

       IF J>;10 THEN

          CONTINUE FOR;

       END IF

       LET I,S=J,0;

         WHILE I>;0

             LET I=I-1;

             IF I=5 THEN

               EXIT FOR;

             END IF

         END WHILE

       END FOR

3.變量的定義與賦值:

   存儲(chǔ)例程中使用的變量必須在例程開(kāi)始處用DEFINE語(yǔ)句定義,變量的數(shù)據(jù)類型為除SERIAL以外的任意類型,如果定義一個(gè)TEXT或BYTE類型的變量,則該變量為指向數(shù)據(jù)的指針。傳遞給程序的變量必須在CRAETE PROCEDURE語(yǔ)句中定義。DEFINE也可使用LIKE語(yǔ)句。變量類型缺省為局部變量,也可引用GLOBAL定義全局變量,全局變量在例程間保持它的值,直至?xí)捊Y(jié)束。用戶必須為每一個(gè)定義的全局變量賦缺省值,缺省值僅在例程第一次引用該全局變量時(shí)使用,以后的例程將會(huì)忽略其缺省值。

  例:CREATE PROCEDURE SP1()

        RETURNING INT;

        DEFINE GLOBAL I INT DEFAULT 1;

        LET I=I+1;

        RETURN I;

      END PROCEDURE

      CRAETE PROCEDURE SP2 ()

        RETURNING INT;

        DEFINE GLOBAL I INT DEFAULT 4;

        LET I=I+1;

        RETURN I;

      END PROCEDURE

     當(dāng)執(zhí)行順序?yàn)镾P1,SP2 返回值3,當(dāng)執(zhí)行順序?yàn)镾P2,SP1返回值為6。

     例程也可被聲名為變量

  例:DEFINE LEN PROCEDURE

      LET X=LEN(A,B,C)

    變量賦值必須用LET關(guān)鍵字,如果不給變量賦值,變量會(huì)有一個(gè)不確定值,任何對(duì)該變量的使用都會(huì)產(chǎn)生錯(cuò)誤。

      BEGIN......END

利用BEGIN....END可以封裝語(yǔ)句,它允許用戶完成以下功能:

     .定義僅用于該語(yǔ)句塊的變量

     .在語(yǔ)句塊內(nèi)以不同方式處理異常情況.

     .在某語(yǔ)句塊中定義的變量,在該語(yǔ)句塊以及它所包含的語(yǔ)句塊都有效,除非又將變量定義一次。

      例 : CREATE PROCEDURE SP ()

           RETURNING INT;

           DEFINE V1 INT;

           LET V1=1;

           BEGIN

             DEFINE V1 INT;

             LET V1=2;

           END

          RETURN V1;

        END PROCEDURE

   返回值為1。

4.在例程中執(zhí)行其他例程和系統(tǒng)命令:

   應(yīng)用CALL命令可在例程中調(diào)用其他的例程。

   例:CREATE PROCEDURE SP()     

       DEFINE I,J,K,L INT;

         CALL SP1(10,20) RETURNING I,J,K;

       END PROCEDURE

   用SYSTEM可在例程中調(diào)用系統(tǒng)命令。 通過(guò)SYSTEM命令,用戶可以執(zhí)行操作系統(tǒng)命令。系統(tǒng)命令放在括號(hào)內(nèi),用雙管道號(hào)(||),還可以為SYSTEM命令串連起多個(gè)表達(dá)式。但在存儲(chǔ)例程中不能使用該命令的返回值,如果系統(tǒng)調(diào)用失敗(返回非零值),返回值將和SQL錯(cuò)誤代碼一起,放在ISAM代碼中。

    例:SYSTEM "/usr/exec/exec.sh"

    用RETURN命令可以將例程運(yùn)行的結(jié)果返回給調(diào)用它的應(yīng)用。當(dāng)需要多次調(diào)用同一例程可執(zhí)行RETURN WITH RESUME命令,它可以保證下一次調(diào)用該例程時(shí),所有變量保持原值,而且從RETURN WITH RESUME后的第一條語(yǔ)句執(zhí)行。

    例:RETURN V_INT WITH RESUME;

5.調(diào)試跟蹤語(yǔ)句:

   我們?cè)谧鰬?yīng)用的時(shí)候,當(dāng)程序完成后都需要進(jìn)行數(shù)據(jù)測(cè)試,以便驗(yàn)證程序邏輯的嚴(yán)密性,在例程中,INFORMIX也提供了調(diào)試跟蹤語(yǔ)句,其主要有(TRACE,ON EXCEPTION,RAISE EXCEPTION)。TRACE 語(yǔ)句可以跟蹤語(yǔ)句塊中每一個(gè)活動(dòng)語(yǔ)句的結(jié)果和過(guò)程,并且可用SET DEBUG FILE TO FILENAME 語(yǔ)法寫(xiě)入指定文件中。

    ON EXECEPTION可在例程中設(shè)定斷點(diǎn),向一個(gè)DEBUGLOG或ERRLOG文件寫(xiě)入錯(cuò)誤信息。完整語(yǔ)法為:

    ON EXCEPTION IN (error_number)

       set sql錯(cuò)誤代碼變量,isam錯(cuò)誤代碼變量,錯(cuò)誤信息變量

       處理語(yǔ)句

    END EXCEPTION WITH RESUME

    注意SET后的3個(gè)變量必須在DEFINE中定義,其中sql錯(cuò)誤代碼.Isam錯(cuò)誤代碼變量類型為INT,錯(cuò)誤信息變量為足夠長(zhǎng)的CHAR變量。Error_number是一個(gè)SQL錯(cuò)誤代碼或用RAISE EXCEPTION設(shè)置的陷阱代碼。WITH RESUME為可選項(xiàng),當(dāng)用WITH RESUME語(yǔ)句時(shí),INFORMIX會(huì)執(zhí)行完ON EXCEPTION語(yǔ)句塊的命令后會(huì)返回到出錯(cuò)命令行的下一行接著執(zhí)行,或RAISE EXCEPTION的下一行執(zhí)行。

    RAISE EXCEPTION人為設(shè)定SQL錯(cuò)誤代碼,ISAM錯(cuò)誤代碼,錯(cuò)誤信息。

    RAISE EXCEPTION與ON EXCEPTION語(yǔ)法連用很容易跟蹤例程的錯(cuò)誤代碼

例:CREATE PROCEDURE TMP_PROCEDURE()

       DEFINE SQLCODE INT;

       DEFINE ISAMCODE INT;

       DEFINE ERR_TXT CHAR(255);

      ON EXCEPTION SET SQLCODE,ISAMCODE,ERR_TXT

        IF SQLCODE= -284 THEN

           RASIE EXCEPTION SQLCODE,ISAMCODE,"在TMP_PROCEDURE中查詢返回多條記錄";

        END IF

        IF SQLCODE= -1218 THEN

           RASIE EXCEPTION SQLCODE,ISAMCODE,"在TMP_RPOCEDURE中類型轉(zhuǎn)換錯(cuò)誤“;

       END IF

     END EXCEPTION

      SELECT .......

END PROCEDURE

  

6.過(guò)程實(shí)例:

CREATE PROCEDURE YEARS(E_DATE DATE,B_DATE DATE)

RETURNING INT;返回E_DATE與B_DATE之間的整年數(shù)(E_DATE大于B_DATE)

    DEFINE V_E  INT;

    DEFINE V_B  INT;

    LET V_E = MONTH(E_DATE);

    LET V_B = MONTH(B_DATE);

    IF V_E < V_B THEN

       LET V_E = YEAR(E_DATE)-YEAR(B_DATE)-1;

       RETURN V_E;

    ELIF V_E >; V_B THEN

       LET V_E = YEAR(E_DATE)-YEAR(B_DATE);

       RETURN V_E;

    END IF;

    LET V_E = DAY(E_DATE);

    LET V_B = DAY(B_DATE);

    IF V_E < V_B THEN

       LET V_E = YEAR(E_DATE)-YEAR(B_DATE)-1;

       RETURN V_E;

    ELSE

       LET V_E = YEAR(E_DATE)-YEAR(B_DATE);

       RETURN V_E;

    END IF;

END PROCEDURE;

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2003-09-01 15:52 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

好東西!謝謝!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2003-09-01 15:58 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

~ing.

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
5 [報(bào)告]
發(fā)表于 2003-09-01 16:06 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

老大,怎么4gl的東西講解的不是很多。


不過(guò),我還是置精了,以后大家發(fā)現(xiàn)4gl相關(guān)的,就那上來(lái)。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2003-09-01 16:23 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

4gl的手冊(cè)有,但沒(méi)有電子文檔,找找看。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2003-09-01 17:42 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

謝謝,收下

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2003-09-01 18:42 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

支持

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2003-09-01 18:44 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

收了

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2003-09-01 21:14 |只看該作者

INFORMIX-4GL實(shí)用手冊(cè)(轉(zhuǎn)載)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP