informix學習總結_第1頁
informix學習總結_第2頁
informix學習總結_第3頁
informix學習總結_第4頁
informix學習總結_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、INFORMIX的學習第一章 ESQL/C的數據類型數據類型SQL與C數據類型的對應簡單類型SQL         CCHAR(n)           char(n+1)CHARCTER(n)       char *SMALLINT          short intINTERGERINT          long intSMALLFLOATREAL   &#

2、160;      floatFLOATDOUBLE PRECISIONdoubleSERIAL           long intDATE           long int復雜類型SQL           CDECIMALDEC NUMERIC          dec_t or struct decimalMONEY      

3、;    dec_t or struct decimalDATETIME          dtime_t or struct dtimeINREVER              intrvl_t or struct intrvlVARCHAR              varchar or string數據類型轉換 轉換類型  轉換后FLOAT  DECIMAL(1

4、6)SMALLFLOAT  DECIMAL(8)INTERGER  DECIMAL(10,0)SAMLLINT  DECIMAL(5,0)   數據類型的轉換函數有關CHAR類型的函數1、 以空值結尾的串的操作函數rdownshift(char *s)          把一個字符串中的所有字母轉換成小寫形式。rupshift(char *s)             把一個字符串中的所有字母轉換成大寫形式。stcat(char *s, char

5、 *dest)      把一個字符串同另一個字符串相連接。stcmpr(char *s1, char *s2)     比較兩個字符串。stcopy(char *from, char *to)   把一個字符串拷貝到另一個字符串。stleng(char *string)           統計字符串的長度。 2、 定長串的操作函數bycmpr(char byte1, byte2, rpt len)   比較兩組連續的字節內存塊。bycopy(char *from, cha

6、r *to, int len) 把一塊內存的內容拷貝到另一塊內存。byfill(char *to, int len, char ch)      用字符填充指定的內存塊。byleng(char from, int count)         統計有效字符的數目。有效字符是指字符串去除了末尾空格所剩的字符。 3、 字符串操作函數ldchar(char *from, int num, char *to)   拷貝定長串到空值結尾的串。stchar(char *from, char *to, int num) 

7、0; 拷貝空值結尾的串到定長串。 4、 字符串函數簡單數值轉換rstod(char *str, double *dblval) 把以空值結束的字符串轉換成C的double型rstoi(char *str, int *intval)     把以空值結束的字符串轉換成C的int類型。rstol(char *str, long *lngval)   把以空值結束的字符串轉換成C的long類型。 DATE類型的函數1、 創建內部日期rdefmtdate(long *jdate, char *frmt char *str)  生成具有確定格式的日期字符串。(st

8、r字符串和fmt必須按月、日、年的同一順序)返回代碼:     0操作成功。 -1204在str參數中有非法的月份。 -1206在str參數中有非法的日期。 -1209由于str中沒有包含年、月、日各部分間的定界符,str的長度必須準確定義為6或8個字節長。 -1212fmt中沒有包含年、月、日部分。fmt和str的有效組合 fmt                str “mmddyy”      

9、;    “DEC 25th 1997” “mmm.dd.yyyy”     “dec 25 1997” “mmm.dd.yyyy”     “DEC-25-1997” “mmm.dd.yyyy”     “12251997” “mmm.dd.yyyy”     “12/25/1997” “yy/mm/dd”        “97/12/25” “yy/mm/dd”     &

10、#160;  “1997,December, 25th" “yy/mm/dd”        “In the year 1997, the month of December, its 25th day” “dd-mm-yy”        “This 25th day of December, 1997”rmdyjul(short mdy3, long *jdate) 用三個短整數生成一個內部日期這三個整數是有關年、月、日的數字值。(年必須以完整的形式表達)返回代碼:

11、60;    0操作成功。 -1204在mdy2中有非法年份。 -1205在mdy1中有非法月份。 -1206在mdy0中有非法日期。 rstrdate(char *str, long *jdate) 將一個字符串日期轉換成一內部格式的日期。rtoday(long *jdate)           從系統日期創建一個內部日期值。 2、 從內部日期轉換成其他類型rfmtdate(ling jdate, char *fmt, char *str) 從內部格式的日期類型值創建格式化的字符串。返回代碼

12、:     0操作成功。 -1210內部日期不能被轉換成月-日-年格式。 -1211程序存儲溢出,即存儲分配錯誤。 rjulmdy(long jdate, short mdy3) 從一個內部日期生成一個含有3個短整數的數組對應內部日期的月、日、年。 rdatestr(long jdate, char *str) 從一個內部日期值創建缺省的日期字符串。 rdayofweek(long jdate) 給定一內部格式表示的日期,此函數返回所對應的星期中的某一天。 rleapyear(int year) 用來判斷給定的年份是否為閏年。返回值: 

13、; TRUE(1)     是閏年  FALSE(0)    不是閏年 簡單數值類型的格式化函數rfmtdouble(double dbval, char *fmt, char *str) 將雙精度格式化為指定的模板格式。rfmtlong(double longval, char *fmt, char *str) 將長整型值格式化為指定的模板格式。可以構成格式模板串的字符:*以星號代替空格。&以0代替空格。#代表一個數字或空格的位置。<左調整,顯示一個逗號,僅當左邊有數字時才顯示。.顯示一個小數點,一個格式模板串只能有一個小數點。

14、-顯示負號,當數字為負的時候顯示。+顯示正號,當數字為正的時候顯示。(顯示一個負號,同(一起顯示負值。)顯示一個負號,同)一起顯示負值。$顯示美元符號。 處理空值的數值類型函數risnull(int type, char *cvar)  檢查C變量是否為空值。rsetnull(int type, char *cvar) 給C變量置空值。 (五)其他函數typalign(int pos, int type) 返回一具有指定數據類型變量的下一個位置。rtypmsize(int sqltype, int sqllen) 返回你必須分配在存儲單元中的指定的C或RDSQLD的字節數。rtyna

15、me(int sqltype) 返回一包含指定RDSQL類型名的以空結尾的串。rtypwidth(int sqltype, intsqllen) 返回一具有RDSQL類型的值轉換為一字符類型時避免截取所需的最小字符數。 ESQL/C數據類型的進一步說明 DECIMAL數據類型的使用1、DECIMAL函數把C的數據類型轉換為DECIMAL值deccvasc(char *from, int len, dec_t *to) 把ASCII字符串轉換成DECIMAL值。返回值:0轉換成功-1200數字太大,上溢。-1201數字太小,下溢。-1213存在非數值字符。-1216存在錯誤指數。注意事項:(1)

16、字符串的前導空格被忽略。(2)字符串可以有前導符號“+”或“-”。(3)字符串可以包含e或E的指數形式,指數前可帶符號“+”或“-”。 deccvint(int from, dec_t *to)     把C的整數轉化成DECIMAL值。deccvlong(long from, dec_t *to)  把C的長整數轉化成DECIMAL值。deccvdbl(double from, dec_t *to) 把C的雙精度值轉化成DECIMAL值。 2、DECIMAL函數把DECIMAL值轉換成字符型dectoasc(dec_t *from, char *to, int

17、len, int rt) 把DECIMAL值轉換成ASCII字符串。說明:len串緩沖區字節的最大長度。rt表示十進制小數右邊十進制的位數。注意事項:(1)rt=-1,則十進制位的個數有*from的十進制值決定。(2)如果此數不適合長度len的字符串,則該函數將這個數轉換為指數表示的形式。如果仍不適合,則串用“*”號填滿。如果數的長度短于串長,則右對齊且左部用空格填充。 dececvt(dec_t *from, int ndgt, int *decpt, int *sign) 將一十進制數轉換成以空格結束的具有指定個數的字符串,且返回此字符串的指針。 decfcvt(dec_t *from,

18、int ndgt, int *decpt, int *sign) 將一十進制數轉換成以空格結束、小數點右邊具有指定位數的字符串,且返回此字符串的指針。 rfmtdec(dec_t *from, char *format, char *to) 將DECIMAL值轉換成格式化的字符串。 1、 DECIMAL函數把DECIMAL值轉換成數值型dectoint(dec_t *from, int *to);dectolong(dec_t *from, long *to);dectodbl(dec_t *from, double *to) 2、 DECIMAL函數算術運算decadd(dec_t *op1

19、, dec_t *op2, dec_t *result);decsub(dec_t *op1, dec_t *op2, dec_t *result);decmul(dec_t *op1, dec_t *op2, dec_t *result);decdiv(dec_t *op1, dec_t *op2, dec_t *result);返回代碼:0操作成功-1200操作產生上溢-1201操作產生下溢-1202試圖用零作除數 3、 DECIMAL函數DECIMAL操作deccmp(dec_t *dec1, dec_t *dec2);返回值:-1dec1<dec20dec1=dec21dec1&

20、gt;dec2         DECUNKNOW有一個是空值 deccopy(dec_t *dec1, dec_t *dec2);decround(dec_t *dec1, int scale);dectrunc(dec_t *dec1, int scale); DATETIME和INTERVAL使用方式及實例1、概述DATETIME數據類型存放時間,時間由以下部分組成:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND和秒的FRACTION(n)。INTERVAL數據類型存放時間間隔,組成部分同上。 定義宿主變量:DATET

21、IME   LargestQulifier  TO  SmallQulifierINTERVAL   LargestQulifier  TO  SmallQulifier限定詞:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION(n)也可以不指明修飾符,直接定義。 2、DATETIME和INTERVAL宏及轉換函數在頭文件datetime.h中定義了8個名字和5個宏,可以在操作DATETIME和INTERVAL值時使用它們。名字TU_YEAR用于YEAR修飾符域的名字TU_MONTHTU_HOURTU

22、_DAYTU_MINUTETU_SECONDTU_FRAC用于開始的fraction修飾符域的名字TU_Fn用于結束的fraction(n)修飾符域的名字(n=15)宏TU_LEN(q)TU_START(q)TU_END(q)TU_DTENCODE(s,e)TU_IENCODE(p,s,e) 3、DATETIME和字符串之間的轉換函數dtcvasc(char *from, dtime_t *to)把ANSI兼容的字符串轉換為DATETIME值dtcvfmtasc(char *from, char *fmt, dtime_t *to) 把格式化的字符串轉換為DATETIME值。dttoasc(c

23、har *from, dtime_t *to) dttofmtasc(char *from, dtime_t *to, int len, char *fmt)4、操作DATETIME值的函數dtcurrent(dtime *to) 把當前日期和時間賦給一個DATETIME變量。dtextent(dtime_t *from, dtime *to) 拷貝DATETIME值,使用的是不同的修飾符。 5、INTERVAL轉換函數incvasc(char *from, intrvl_t *to)把ANSI兼容的字符串轉換為INTERVAL值incvfmtasc(char *from, char *fmt

24、, intrvl_t *to) 把格式化的字符串轉換為INTERVAL值。intoasc(char *from, intrvl_t *to) intofmtasc(char *from, intrvl_t *to, int len, char *fmt) 6、提供DATETIME和INTERVAL算術操作的函數rdtaddinv(dec_t *dt, int dg, dec_t *in, int iq, dec_t *sum) 把一個INTERVAL值加到一個DATETIME值上。rdtsub(det_t *dt2, int dq2, dec_t *dt1, int dq1, dec_t *d

25、t0, int dq0) 求兩個DATETIME值的差。 7、DATE類型和DATETIME類型之間的轉換DATEDATETIME定義一個帶有修飾符“year to day”的DATETIME變量使用rfmtdate()函數把DATE值轉換為一個字符串,使用的模板是yyyy-mm-dd使用dtcvasc()函數把字符串轉換成DATETIME類型變量的值。如果需要的話,可以使用dtextend()函數來調整DATETIME的修飾符。 DATETIMEDATE使用dtextend()函數把DATETIME的修飾符調整為“year to day”。使用dttoasc()函數以模板yyyy-mm-dd

26、創建一個字符串。使用rdefmtdate()函數以模板yyyy-mm-dd把字符串轉換為一個DATE值。 8、有關DATETIME和INTERVAL值的其他運算rinvtodec(dec_t *v, int q, dec_t *dec) 把INTERVAL或DATETIME類型的值轉換成DECIMAL類型redectoinv(dec_t *dec, dec_t *v, int q) 把DECIMAL值轉換成INTERVAL或DATETIME類型值 第二章 游標的使用聲明一個游標DECLARE the_item CURSOR FOR SELECT order_num, item_num, sto

27、ck_num INTO o_num, i_num, s_num FROM items打開一個游標OPEN the_item因為這是數據庫第一次收到查詢,所以這也是檢測許多錯誤的時機。打開游標后,程序應檢查SQLCODE的值。如果它包含了一個負數值,那么,游標是不可用的。SELECT語句中也許會有錯誤,任何錯誤都可能使得數據庫服務器不能執行語句。如果SQLCODE是0,表明SELECT語句的語法正確,游標可以使用。但是,在這一點上,程序并不知道游標能否返回數據行。取出行DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_nu

28、m INTO o_num, i_num, s_num FROM itemsOPEN the_itemWHILE sq1code = 0 FETCH the_item IF sq1code = 0 THEN DISPLAY o_num, i_num, s_num END IFEND WHILE判斷數據結束DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num FROM itemsOPEN the_itemIF sq1code = 0 THEN FETCH the_item - - fetch first rowEND I

29、FWHILE sq1code = 0 DISPLAY o_num, i_num, s_num FETCH the_itemEND WHILE定位INTO子句INTO子句給出了宿主變量的名字,由這些宿主變量接收數據庫服務器返回的數據。宿主變量的名字必須在SELECT或FETCH語句中的一個中出現,但不能在二者中都出現。下面是重新編寫的在FETCH語句中指定宿主變量的例子:DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num FROM itemsOPEN the_itemWHILE status = 0 FETCH the_item INTO o_num, i_num, s_num IF status = 0 THEN DISPLAY o_num, i_num, s_num END IFEND WHILE第三章 FOREACH語句例:第四章 存儲過程簡單的存儲過程;如何創建存儲過程CREATE PROCEDURE 過程名 (參數1,參數2,)RETURNING 類型1, 類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論