版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、-. z.INFORMI*的學(xué)習(xí) ESQL/C的數(shù)據(jù)類型數(shù)據(jù)類型SQL與C數(shù)據(jù)類型的對應(yīng)簡單類型SQL CCHARn char(n+1)CHARCTERn char *SMALLINT short intINTERGERINT long intSMALLFLOATREAL floatFLOATDOUBLE PRECISIONdoubleSERIAL long intDATE long int復(fù)雜類型SQL CDECIMALDEC NUMERIC dec_t or struct decimalMONEY dec_t or struct decimalDATETIME dtime_t or str
2、uct dtimeINREVER intrvl_t or struct intrvlVARCHAR varchar or string數(shù)據(jù)類型轉(zhuǎn)換 轉(zhuǎn)換類型 轉(zhuǎn)換后FLOAT DECIMAL16SMALLFLOAT DECIMAL8INTERGER DECIMAL10,0SAMLLINT DECIMAL5,0 數(shù)據(jù)類型的轉(zhuǎn)換函數(shù)有關(guān)CHAR類型的函數(shù)以空值結(jié)尾的串的操作函數(shù)rdownshift(char *s) 把一個字符串中的所有字母轉(zhuǎn)換成小寫形式。rupshift(char *s) 把一個字符串中的所有字母轉(zhuǎn)換成大寫形式。stcat(char *s, char *dest) 把一個字符串同
3、另一個字符串相連接。stcmpr(char *s1, char *s2) 比擬兩個字符串。stcopy(char *from, char *to) 把一個字符串拷貝到另一個字符串。stleng(char *string) 統(tǒng)計字符串的長度。 定長串的操作函數(shù)bycmpr(char byte1, byte2, rpt len) 比擬兩組連續(xù)的字節(jié)內(nèi)存塊。bycopy(char *from, char *to, int len) 把一塊內(nèi)存的內(nèi)容拷貝到另一塊內(nèi)存。byfill(char *to, int len, char ch) 用字符填充指定的內(nèi)存塊。byleng(char from, int
4、 count) 統(tǒng)計有效字符的數(shù)目。有效字符是指字符串去除了末尾空格所剩的字符。 字符串操作函數(shù)ldchar(char *from, int num, char *to) 拷貝定長串到空值結(jié)尾的串。stchar(char *from, char *to, int num) 拷貝空值結(jié)尾的串到定長串。 字符串函數(shù)簡單數(shù)值轉(zhuǎn)換rstod(char *str, double *dblval) 把以空值完畢的字符串轉(zhuǎn)換成C的double型rstoi(char *str, int *intval) 把以空值完畢的字符串轉(zhuǎn)換成C的int類型。rstol(char *str, long *lngval) 把
5、以空值完畢的字符串轉(zhuǎn)換成C的long類型。 DATE類型的函數(shù)創(chuàng)立內(nèi)部日期rdefmtdate(long *jdate, char *frmt char *str) 生成具有確定格式的日期字符串。str字符串和fmt必須按月、日、年的同一順序返回代碼:0操作成功。-1204在str參數(shù)中有非法的月份。-1206在str參數(shù)中有非法的日期。-1209由于str中沒有包含年、月、日各局部間的定界符,str的長度必須準(zhǔn)確定義為6或8個字節(jié)長。-1212fmt中沒有包含年、月、日局部。fmt和str的有效組合fmt str“mmddyy“DEC 25th 1997”“mmm.dd.yyyy“dec 2
6、5 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“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) 用三個短整數(shù)生成一個內(nèi)部日期這三個整數(shù)是有關(guān)年、月、日的數(shù)字值。年必須以
7、完整的形式表達(dá)返回代碼:0操作成功。-1204在mdy2中有非法年份。-1205在mdy1中有非法月份。-1206在mdy0中有非法日期。 rstrdate(char *str, long *jdate) 將一個字符串日期轉(zhuǎn)換成一內(nèi)部格式的日期。rtoday(long *jdate) 從系統(tǒng)日期創(chuàng)立一個內(nèi)部日期值。 從內(nèi)部日期轉(zhuǎn)換成其他類型rfmtdate(ling jdate, char *fmt, char *str) 從內(nèi)部格式的日期類型值創(chuàng)立格式化的字符串。返回代碼:0操作成功。-1210內(nèi)部日期不能被轉(zhuǎn)換成月-日-年格式。-1211程序存儲溢出,即存儲分配錯誤。 rjulmdy(lo
8、ng jdate, short mdy3) 從一個內(nèi)部日期生成一個含有3個短整數(shù)的數(shù)組對應(yīng)內(nèi)部日期的月、日、年。 rdatestr(long jdate, char *str) 從一個內(nèi)部日期值創(chuàng)立缺省的日期字符串。 rdayofweek(long jdate) 給定一內(nèi)部格式表示的日期,此函數(shù)返回所對應(yīng)的星期中的*一天。 rleapyear(int year) 用來判斷給定的年份是否為閏年。返回值: TRUE1 是閏年 FALSE0 不是閏年 簡單數(shù)值類型的格式化函數(shù)rfmtdouble(double dbval, char *fmt, char *str) 將雙精度格式化為指定的模板格式。
9、rfmtlong(double longval, char *fmt, char *str) 將長整型值格式化為指定的模板格式??梢詷?gòu)成格式模板串的字符:*以星號代替空格。&以0代替空格。#代表一個數(shù)字或空格的位置。左調(diào)整,顯示一個逗號,僅當(dāng)左邊有數(shù)字時才顯示。.顯示一個小數(shù)點,一個格式模板串只能有一個小數(shù)點。-顯示負(fù)號,當(dāng)數(shù)字為負(fù)的時候顯示。+顯示正號,當(dāng)數(shù)字為正的時候顯示。(顯示一個負(fù)號,同一起顯示負(fù)值。)顯示一個負(fù)號,同一起顯示負(fù)值。$顯示美元符號。 處理空值的數(shù)值類型函數(shù)risnull(int type, char *cvar) 檢查C變量是否為空值。rsetnull(int type
10、, char *cvar) 給C變量置空值。 五其他函數(shù)typalign(int pos, int type) 返回一具有指定數(shù)據(jù)類型變量的下一個位置。rtypmsize(int sqltype, int sqllen) 返回你必須分配在存儲單元中的指定的C或RDSQLD的字節(jié)數(shù)。rtyname(int sqltype) 返回一包含指定RDSQL類型名的以空結(jié)尾的串。rtypwidth(int sqltype, intsqllen) 返回一具有RDSQL類型的值轉(zhuǎn)換為一字符類型時防止截取所需的最小字符數(shù)。 ESQL/C數(shù)據(jù)類型的進(jìn)一步說明 DECIMAL數(shù)據(jù)類型的使用1、DECIMAL函數(shù)把C
11、的數(shù)據(jù)類型轉(zhuǎn)換為DECIMAL值deccvasc(char *from, int len, dec_t *to) 把ASCII字符串轉(zhuǎn)換成DECIMAL值。返回值:0轉(zhuǎn)換成功-1200數(shù)字太大,上溢。-1201數(shù)字太小,下溢。-1213存在非數(shù)值字符。-1216存在錯誤指數(shù)。考前須知:1字符串的前導(dǎo)空格被忽略。2字符串可以有前導(dǎo)符號“+或“-。3字符串可以包含e或E的指數(shù)形式,指數(shù)前可帶符號“+或“-。 deccvint(int from, dec_t *to) 把C的整數(shù)轉(zhuǎn)化成DECIMAL值。deccvlong(long from, dec_t *to) 把C的長整數(shù)轉(zhuǎn)化成DECIMAL值
12、。deccvdbl(double from, dec_t *to) 把C的雙精度值轉(zhuǎn)化成DECIMAL值。 2、DECIMAL函數(shù)把DECIMAL值轉(zhuǎn)換成字符型dectoasc(dec_t *from, char *to, int len, int rt) 把DECIMAL值轉(zhuǎn)換成ASCII字符串。說明:len串緩沖區(qū)字節(jié)的最大長度。rt表示十進(jìn)制小數(shù)右邊十進(jìn)制的位數(shù)??记绊氈?rt=-1,則十進(jìn)制位的個數(shù)有*from的十進(jìn)制值決定。2如果此數(shù)不適合長度len的字符串,則該函數(shù)將這個數(shù)轉(zhuǎn)換為指數(shù)表示的形式。如果仍不適合,則串用“*號填滿。如果數(shù)的長度短于串長,則右對齊且左部用空格填充。 de
13、cecvt(dec_t *from, int ndgt, int *decpt, int *sign) 將一十進(jìn)制數(shù)轉(zhuǎn)換成以空格完畢的具有指定個數(shù)的字符串,且返回此字符串的指針。 decfcvt(dec_t *from, int ndgt, int *decpt, int *sign) 將一十進(jìn)制數(shù)轉(zhuǎn)換成以空格完畢、小數(shù)點右邊具有指定位數(shù)的字符串,且返回此字符串的指針。 rfmtdec(dec_t *from, char *format, char *to) 將DECIMAL值轉(zhuǎn)換成格式化的字符串。 DECIMAL函數(shù)把DECIMAL值轉(zhuǎn)換成數(shù)值型dectoint(dec_t *from, i
14、nt *to);dectolong(dec_t *from, long *to);dectodbl(dec_t *from, double *to) DECIMAL函數(shù)算術(shù)運算decadd(dec_t *op1, 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操作產(chǎn)生上溢-1201操作
15、產(chǎn)生下溢-1202試圖用零作除數(shù) DECIMAL函數(shù)DECIMAL操作deccmp(dec_t *dec1, dec_t *dec2);返回值:-1dec1dec2DECUNKNOW有一個是空值 deccopy(dec_t *dec1, dec_t *dec2);decround(dec_t *dec1, int scale);dectrunc(dec_t *dec1, int scale); DATETIME和INTERVAL使用方式及實例1、概述DATETIME數(shù)據(jù)類型存放時間,時間由以下局部組成:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND和秒的FRACTION(n
16、)。INTERVAL數(shù)據(jù)類型存放時間間隔,組成局部同上。 定義宿主變量:DATETIME LargestQulifier TO SmallQulifierINTERVAL LargestQulifier TO SmallQulifier限定詞:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,F(xiàn)RACTION(n)也可以不指明修飾符,直接定義。 2、DATETIME和INTERVAL宏及轉(zhuǎn)換函數(shù)在頭文件datetime.h中定義了8個名字和5個宏,可以在操作DATETIME和INTERVAL值時使用它們。名字TU_YEAR用于YEAR修飾符域的名字TU_MONTHTU_HOU
17、RTU_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和字符串之間的轉(zhuǎn)換函數(shù)dtcvasc(char *from, dtime_t *to)把ANSI兼容的字符串轉(zhuǎn)換為DATETIME值dtcvfmtasc(char *from, char *fmt, dtime_t *to) 把格式化的字符串轉(zhuǎn)換為DATETIME值。dttoas
18、c(char *from, dtime_t *to) dttofmtasc(char *from, dtime_t *to, int len, char *fmt)4、操作DATETIME值的函數(shù)dtcurrent(dtime *to) 把當(dāng)前日期和時間賦給一個DATETIME變量。dte*tent(dtime_t *from, dtime *to) 拷貝DATETIME值,使用的是不同的修飾符。 5、INTERVAL轉(zhuǎn)換函數(shù)incvasc(char *from, intrvl_t *to)把ANSI兼容的字符串轉(zhuǎn)換為INTERVAL值incvfmtasc(char *from, char *
19、fmt, intrvl_t *to) 把格式化的字符串轉(zhuǎn)換為INTERVAL值。intoasc(char *from, intrvl_t *to) intofmtasc(char *from, intrvl_t *to, int len, char *fmt) 6、提供DATETIME和INTERVAL算術(shù)操作的函數(shù)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
20、 *dt0, int dq0) 求兩個DATETIME值的差。 7、DATE類型和DATETIME類型之間的轉(zhuǎn)換DATEDATETIME定義一個帶有修飾符“year to day的DATETIME變量使用rfmtdate()函數(shù)把DATE值轉(zhuǎn)換為一個字符串,使用的模板是yyyy-mm-dd使用dtcvasc()函數(shù)把字符串轉(zhuǎn)換成DATETIME類型變量的值。如果需要的話,可以使用dte*tend()函數(shù)來調(diào)整DATETIME的修飾符。 DATETIMEDATE使用dte*tend()函數(shù)把DATETIME的修飾符調(diào)整為“year to day。使用dttoasc()函數(shù)以模板yyyy-mm-d
21、d創(chuàng)立一個字符串。使用rdefmtdate()函數(shù)以模板yyyy-mm-dd把字符串轉(zhuǎn)換為一個DATE值。 8、有關(guān)DATETIME和INTERVAL值的其他運算rinvtodec(dec_t *v, int q, dec_t *dec) 把INTERVAL或DATETIME類型的值轉(zhuǎn)換成DECIMAL類型redectoinv(dec_t *dec, dec_t *v, int q) 把DECIMAL值轉(zhuǎn)換成INTERVAL或DATETIME類型值 游標(biāo)的使用聲明一個游標(biāo)DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_
22、num INTO o_num, i_num, s_num FROM items翻開一個游標(biāo)OPEN the_item因為這是數(shù)據(jù)庫第一次收到查詢,所以這也是檢測許多錯誤的時機(jī)。翻開游標(biāo)后,程序應(yīng)檢查SQLCODE的值。如果它包含了一個負(fù)數(shù)值,則,游標(biāo)是不可用的。SELECT語句中也許會有錯誤,任何錯誤都可能使得數(shù)據(jù)庫效勞器不能執(zhí)行語句。如果SQLCODE是0,說明SELECT語句的語法正確,游標(biāo)可以使用。但是,在這一點上,程序并不知道游標(biāo)能否返回數(shù)據(jù)行。取出行DECLARE the_item CURSOR FOR SELECT order_num, item_num, stock_num IN
23、TO 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判斷數(shù)據(jù)完畢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 IFWHI
24、LE sq1code = 0 DISPLAY o_num, i_num, s_num FETCH the_itemEND WHILE定位INTO子句INTO子句給出了宿主變量的名字,由這些宿主變量接收數(shù)據(jù)庫效勞器返回的數(shù)據(jù)。宿主變量的名字必須在SELECT或FETCH語句中的一個中出現(xiàn),但不能在二者中都出現(xiàn)。下面是重新編寫的在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 WHILEFOREACH語句例:存儲過程簡單的存儲過程;如何創(chuàng)立存儲過程CREATE PROCEDURE 過程名 (參數(shù)1,參數(shù)2,)RETURNING 類型1, 類型2, ;-返回值類型DEFINE 變量1 類型1;DEFINE 變量2 類型2; ;SELECT 表字段1, 表字段2, INTO變量1, 變量2, FROM 表名 WHERE 條件;-與參數(shù)有關(guān)RETURN變量1,變量2,;END PROC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商品櫥柜托管合同模板
- 保管合同模板格式
- 農(nóng)藥化肥銷售合同范例
- 2024年園林景觀設(shè)計與養(yǎng)護(hù)一體化服務(wù)合同
- 2024年23跨境電子商務(wù)服務(wù)合同
- 2024年加工原料購銷合同:數(shù)量與價格
- 2024年夏令營醫(yī)療救護(hù)協(xié)議
- (2024版)勞動合同主體變更及保密協(xié)議書
- 建筑咨詢建造師合作協(xié)議
- 2024年醫(yī)療器械研發(fā)與生產(chǎn)合同協(xié)議
- 環(huán)氧自流平工程質(zhì)量驗收單
- 大豆栽培技術(shù)PPT課件
- 導(dǎo)尿管相關(guān)尿路感染目標(biāo)性監(jiān)測方案
- 銷售手冊(共33頁).doc
- 裝飾工程分部分項工程量清單
- 廢物處置分類及收費標(biāo)準(zhǔn)
- 《大學(xué)》導(dǎo)讀解析
- 會計師事務(wù)所審計工作底稿之銀行詢證函模版
- 2022年胸腔鏡輔助下二尖瓣置換、三尖瓣成形術(shù)的護(hù)理配合
- 六上數(shù)學(xué)《圓》練習(xí)題(超全)
- visa拒付爭議處理
評論
0/150
提交評論