INFORMIX存儲過程編寫_第1頁
INFORMIX存儲過程編寫_第2頁
INFORMIX存儲過程編寫_第3頁
INFORMIX存儲過程編寫_第4頁
INFORMIX存儲過程編寫_第5頁
已閱讀5頁,還剩48頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

、環境備正確運的數據例境;建立訪數庫用用戶要CONNECT和權限;3議獨的試據;創建的數庫要日數;個慣文編;(建議FTP工具(若文本編輯器能,該項要(議操作1檢查狀態件:操作用可作實例(可以接用用戶命令-結果:輸出中包On-Line字樣表示數據庫實例啟動正常;2dbaccess具的使用工具的體使見附件Int1.pdf;3根據錯誤號查找錯誤信息在命令提示下鍵入命令:finderr三、寫儲程礎1用據型類型明字的字串1<=n<=32767,archar(n可變長字節字符最大長度為n字節節整integer4字整數字節/64位平臺存儲間為:度,decimal(m,n儲間精度/2+1表浮數float具機型相關一般8個real字節,serial4節(自增長期,4字節,認示式datetime日期時間,含7個字段YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/FRACTIONblob任意種類的二進制數據,大,4TBboolean/FALSE('f'2常用作語句定義語句:用于創建并定義其構。操作語句:用于中選擇、入、更新刪除指針操作語句:于指針操作打開、讀取關閉一個針4態管理命令:于動態管理運行過程中的資。訪問語句:用于確定如訪問句完性:用維整。查詢化息:用獲有查執的息存儲程:用執和試儲程輔助句:品加的SQL3:見件:常4:1建儲程out_para_list/ou2reproc_name;3res,th編譯代碼等sprocplan查詢執行劃和引格之間關性清單4執是標準語言,數據庫訪問語言直接運行:procedureout_para_list/ou調;callproc_name(in_para_listt_para_listt_result_set;或letariable=mymeny_1;調用同據_sp1(;調用據不網節:ecuproceduredatabase@sitename:my5他用句1支if...elif...then......endif2(。forfori=110end(有分號。......endhile(沒分號。foreachforeachselectintofromtabname....endforeach(3:。條過余下的體啟動下一;。終止;。RETURN:成出儲程;。RAISEEXCEPTION:出,外捕獲錯誤例子:intofromtabnamewhere...ifendif;i=110ifexitfor;endif;for;whileif...if;while;endforeach(4:BEGIN...BEGINcewptionceptionbeginEND;、語句1子句的關鍵字:BETWEEN:;IN:;LIKE:;MATCHES:;ISNULL:NULL;NOT:;2子句的操作1=;2!=不等3<>不于5>=大于或等6<:于;小或于eg1*tablenamecol1[not]betweenval1val2;eg2*tablenamecol1[not]in3索1串:字列后用[],自束;如COL1[1,5];注:開始,;并;一字代開始;個代止,不大長;2LIKE:。%:代個或字;;;(\;:select*fromcol1like"%\%%":;:LIKE,;;3MATCHES:.(:*:0;?:;[](LIKE;,;:AL:select*fromcol1matches"[A-L]*";(^:AL:select*fromcol1matches"[^A-L]*";,[][],A、C信;*fromtablenameherematches"[ABC]*";(^:select*fromcol1matches"[^ABC]*";‘ABCabc:select*fromtabnameherematches"*[aA][bB][cC]*":,select*fromtabnameherematches"[A-Ls]*"COL1A-Ls(*?,(\,:COL1*:select*fromtabnamecol1matches"*\**"4NULL理列知時識NULL不0空IS[NOT]NULL未知;5歧義列1個表存在表限,:selectfromt1,t2here錯誤,COL1沒限selecta.col1,a.col2,b.col3fromba.col1=b.col1;5外連1((;2:,OUTER;NULL,WHERE;:select,b.col3t1a,outert2herea.col1=6括嵌簡(簡單a.col1,col2,b.col3,col4,col5fromt1a,OUTER(t2b,t3chereandb.col2=c.col2andcol5='abc';(COL5先將T3到T2,詢COL5=’內;然結果最果(OUTER用結果7用括號嵌套外連接例子:a.col1,col2,b.col3,col4,col5fromt1b,OUTERt3wherea.col1=b.col1b.col2=c.col2andcol5='abc';(COL5T3表中注:T2T3外連接,T1與(T2和T3外連接結果是連接;8BY子句和句例:selecttabname[1,3],count(*asfrombytabname[1,3]子句對一組采用濾件通常GROUPBY子句起用,每個組過濾;selectascntfrombycount(*>19ORDERBY句指定回結順序;該子中出個多;優先級次;ASC指定升序DESC執降序;10INTO子句生臨時,對話期間存;可以DROPTABLE顯示除下列件臨表動:1出序、關當數庫、切當前數庫接。五、期間作數據:datetime;當前期間:當前:;相關函數:參見附“用函數”例子:當前期:letr_dtime_v=rrent;當前期letr_date_vartoday;--date日期減。tmp_date=today+UNITS--當前時間加三。lettmp_date=interval(7day--前時加上7天4期/時間轉換成符串:schar(20;datetimetosecond;lety=lets=year(y|month(y|day(y|hour(y|extend(y,minute|extend(y,secondtosecond;5/:dtyeartosecond;dt=EXTEND(DATETIME(2002-07-09second,、游標作1定義forselect....from....where.........end2例子definev1integer;definev2yeartosecond;definev3varchar(10;definev4varchar(20;fromt1RETURNWITHRESUME;ENDFOREACH;、事務1語法:work;.....commitwork/rollbackwork;2明:必須日數庫中才能用,則提錯誤;事務的作能,則能成事被消造死;八、常理法方法1:次作進判。缺點:該法作瑣,率低下;優點:能確位題;方法2:數庫供異保功:....;ception;:;:、高效;使用議根實情選擇,往兩靈結使效最;九、儲程蹤法方法、將蹤容入,程執完后;方法、在程直返跟對;方法、使trace功,細用參后面子;十、儲程載方法一:使具。用NEW菜項中接輸或貝存過語句,使用RUN運行;:由于有限存程語句過,部份動截;方法二:使dbaccess工具,用choose直接選擇編輯好SQL文件再使用RUN功運行。方法三:使用工具dbaccess,接載腳本:dbaccessdb_namefile_name.sql、例子1用存儲過程中返回個或多個值procedureproc_test(eartosecond,varchar(10;1define2eartodefine3archar(10;let1=1;let2=let3="test";1,v2,v3;2用存儲過程中返回條記錄預設條件:表T1,字段col1int,earto,col3char(10;procedureproc_test(eartosecond,varchar(10;1define2eartodefine3archar(10;into2,vfromt1where--col1,;v1,v2,v3;end3存過中回(標cursor預設:表T1,int,col2datetimeyearchar(10;returningint,datetimeearsecond,varchar(10;definedefinev2datetimeyearsecond;definev3selectcol1,col2,col3intov1,v2,v3fromv1,v2,v3withforeach;procedure;4將日轉換returningvarchar(8;definedefinedefinec_monthchar(2;definelet=year(today;letc_month=let=day(today;iflength(c_month<2letc_month=|c_month;if;iflength(c_day<2thenlet='0'|if;lets=|c_month|procedure;5使用事務實現功能:將表1中的一條記錄移到另一張表假設:兩張表的字段相同,只有兩個字段(col1integer,col2varchar(10procedurereturningdefinecol1_valdefinecol2_valvarchar(10;col1,col2intofromhereifdbinfo('sqlca.sqlerrd2'thenreturn9;--不存在endif;beginorkinsertintot2(col1,col2ifrollbackreturn1;--插操失endif;deletefromif<1thenreturn1;--刪操失endif;commitreturn0;--操作成功procedure;6異常處理事務中每步關鍵操作進行跟蹤處理,見例;使用數據庫提供的異保護功能例5重寫:procedureproc_trans(returningvarchar(10;return99;--數據庫操作常exception;col1,col2intocol1_val,col2_valfromt1ifdbinfo('sqlca.sqlerrd2'<1thenreturn9;--記錄不存在endif;beginworkinsertintot2(col1,col2ifrollbackwork;return1;--endif;deletefromwherecol1=1;if<1thenwork;return2;--endif;commitwork;return0;--end7調試跟蹤createprocedureproc_trans(returningdefinecol1_valinteger;definecol2_val置常理exceptionrollback;return99;--數據庫常exception;setfile"trace_check";--withappend--on--;procedure--"on";--"procedure";selectcol1,col2intofromt1whereifreturn9;--不存在endif;"col1_val="|col1_val|"col2_val="|col2_val;workinto(col1,col2if<1thenrollbackwork;"Failedtointoreturn1;--插操失endif;deletefromwhereifdbinfo('sqlca.sqlerrd2'thenwork;"Failedtofromt1";return2;--endif;commitwork;trace"ok"traceoff;return0;--end8游標使用實現能:返回表中滿足件的記錄,返回記錄假設:表T1(co1linteger,col2varchar(10;returningint,varchar(10;iinteger;cvarchar(10;置常理exrollback;return99;--exception;withholdforintofromwork;returnwithresume;deletefromwherecurrentc1;work;9執行統令,設等。createprocedurep1(stem"mkdir、處理充--現序轉1獲有,果-206(tablenotfound,成表格并入,成后從繼續執行...begindefinesql_errint,isam_errint;definesql_texchar(20;onexsql_texifsql_err=-206my_table(col_1char(15,col_2int;insertintovalues(var_1,"Jobif;ception;my_tablevar_2_;returnreturn"Jobfailed";...、使用with示例如果誤-則生表插行然邏繼執。defineint,int,definesql_textchar(20;onceptionsql_errifsql_err=then_table(col_1insertintovalues(var_1,if;endexceptionresume;intovalues(var_1,count(*in

溫馨提示

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

評論

0/150

提交評論