Postgresql存儲過程_第1頁
Postgresql存儲過程_第2頁
Postgresql存儲過程_第3頁
Postgresql存儲過程_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、用 PL/pgSQL 寫 postgreSQL 的存儲過程一、存儲過程結構:Createorreplacefunction 過程名(參數(shù)名參數(shù)類型,.)returns 返回值類型$body$/聲明變量Declare變量名變量類型;如:flagBoolean;變量賦值方式(變量名類型:=值;)如:Strtext:=值;/strtext;str:=K;Begin函數(shù)體;End;$body$Languageplpgsql;二、變量類型:除了 postgresql 內置的變量類型外,常用的還有 RECORD,表示一條記錄三、連接字符:Postgresql 存儲過程中的連接字符不再是“+”,而是使用“|

2、四、控制結構:1、if 條件(五種形式)IF.THENIF.THEN.ELSEIF.THEN.ELSEIFIF.THEN.ELSIF.THEN.ELSEIF.THEN.ELSEIF.THEN.ELSEas(注:ELSEIF 是 ELSIF 的別名)2、循環(huán)使用 LOOPEXIT,CONTINU,EWHILE和 FOR語句,可以控制 PL/pgSQL函數(shù)重復一系列命令。1)、LOOPLOOPstatementsENDLOOPlabel;LOOP 定義一個無條件的循環(huán),無限循環(huán),直到由 EXIT 或者 RETUR 語句終止??蛇x的label可以由 EXIT 和 CONTINUE 語句使用,用于在嵌

3、套循環(huán)中聲明應該應用于哪一層循環(huán)。2)、EXITEXITlabelWHENexpression;如果沒有給出label,那么退出最內層的循環(huán),然后執(zhí)行跟在 ENDLOOP 后面的語句。如果給出label,那么它必須是當前或者更高層的嵌套循環(huán)塊或者語句塊的標簽。然后該命名塊或者循環(huán)就會終止,而控制落到對應循環(huán)/塊的 END 語句后面的語句上。如果聲明了 WHEN 循環(huán)退出只有在expression為真的時候才發(fā)生,否則控制會落到 EXIT 后面的語句上。EXIT 可以用于在所有的循環(huán)類型中,它并不僅僅限制于在無條件循環(huán)中使用。在和 BEGIN 塊一起使用的時候,EXIT 把控制交給塊結束后的下一

4、個語句。例如:Loop 循環(huán)If,then 條件判斷Exit;條件成立,則退出循環(huán)。Endif;Endloop;3)、CONTINUECONTINUElabelWHENexpression;如果沒有給出 label,那么就開始最內層的循環(huán)的下一次執(zhí)行。也就是說,控制傳遞回給循環(huán)控制表達式(如果有),然后重新計算循環(huán)體。如果出現(xiàn)了label,它聲明即將繼續(xù)執(zhí)行的循環(huán)的標簽。如果聲明了 WHEN 那么循環(huán)的下一次執(zhí)行只有在 expression 為真的情況下才進行。否則,控制傳遞給 CONTINUE 后面的語句。CONTINUED 以用于所有類型的循環(huán);它并不僅僅限于無條件循環(huán)。例如:LOOP一些

5、計算EXITWHENcount100;CONTINUEWHENcount50;一些在 count 數(shù)值在50.100里面時候的計算ENDLOOP4)、WHILEWHILEexpressionLOOPstatementsENDLOOPlabel;只要條件表達式為真,WHILE 語句就會不停在一系列語句上進行循環(huán).條件是在每次進入循環(huán)體的時候檢查的.例如:WHILEamount_owed0ANDgift_certificate_balance0LOOP-可以在這里做些計算ENDLOOP;WHILENOTBOOLEAN_expressionLOOP-可以在這里做些計算ENDLOOP;5)、FOR(整

6、數(shù)變種)FORnamelNREVERSEexpression.expressionLOOPstatementsENDLOOPlabal;這種形式的 FOR 寸一定范圍的整數(shù)數(shù)值進行迭代的循環(huán)。變量name會自動定義為 integer 類型并且只在循環(huán)里存在。給出范圍上下界的兩個表達式在進入循環(huán)的時候計算一次。迭代步進值總是為 1,但如果聲明了 REVERS 就是-1。一些整數(shù) FOR 循環(huán)的例子:FORiIN1.10LOOP 表示 1 循環(huán)到 10這里可以放一些表達式RAISENOTICEiIS%,i;ENDLOOP;FORiINREVERSE10.1LOOP這里可以放一些表達式ENDLOOP;如果下界大于上界(或者是在 REVERSE 情況下是小于),那么循環(huán)體將完全不被執(zhí)行。而且不會拋出任何錯誤。3、異常捕獲E

溫馨提示

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

評論

0/150

提交評論