Postgresql存儲過程_第1頁
Postgresql存儲過程_第2頁
Postgresql存儲過程_第3頁
Postgresql存儲過程_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、用PL/pgSQL寫postgreSQL的存儲過程一、存儲過程結(jié)構(gòu):Create or replace function過程名(參數(shù)名 參數(shù)類型,:.)returns返回值類型 as $body$/聲明變量Declare變量名變量類型;如:flag Boolean;變量賦值方式(變量名類型:=值;)如:Str text :=值;/ str text; str :=值;Begin函數(shù)體;End;$body$Language plpgsql;二、 變量類型:除了 postgresql內(nèi)置的變量類型外,常用的還有RECORD,表示一條記錄三、連接字符:Postgresql存儲過程中的連接字符不再是&

2、quot;+”,而是使用“ | ”。四、控制結(jié)構(gòu):1、if條件(五種形式)IF . THENIF . THEN . ELSEIF . THEN . ELSE IFIF . THEN . ELSIF . THEN . ELSEIF . THEN . ELSEIF . THEN . ELSE(注:elseif 是 elsif 的別名)2、循環(huán)使用 LOOP,EXIT,CONTINU,EWHILE, 和 FOR 語句,可以控制 PL/pgSQL 函數(shù)重復(fù)一系列命令。1)、 LOOP << label >> LOOPstatementsEND LOOP label ;LOOP定

3、義一個(gè)無條件的循環(huán),無限循環(huán),直到由EXIT或者RETURNS句終止。 可選的 label 可以由 EXIT 和 CONTINUE 語句使用, 用于在嵌套循環(huán)中聲明應(yīng)該 應(yīng)用于哪一層循環(huán)。2)、EXITEXIT label WHEN expression ;如果沒有給出 label , 那么退出最內(nèi)層的循環(huán),然后執(zhí)行跟在 END LOOP 后 面的語句。 如果給出 label , 那么它必須是當(dāng)前或者更高層的嵌套循環(huán)塊或者語 句塊的標(biāo)簽。 然后該命名塊或者循環(huán)就會終止, 而控制落到對應(yīng)循環(huán) /塊的 END 語 句后面的語句上。如果聲明了 WHE,N 循環(huán)退出只有在 expression 為真的

4、時(shí)候才發(fā)生, 否則控 制會落到 EXIT 后面的語句上。EXIT 可以用于在所有的循環(huán)類型中, 它并不僅僅限制于在無條件循環(huán)中使用。 在和 BEGIN 塊一起使用的時(shí)候, EXIT 把控制交給塊結(jié)束后的下一個(gè)語句。例如:Loop 循環(huán)If , then 條件判斷Exit ; 條件成立,則退出循環(huán)。End if;End loop ;3)、 CONTINUECONTINUE label WHEN expression ;如果沒有給出 label ,那么就開始最內(nèi)層的循環(huán)的下一次執(zhí)行。 也就是說, 控制傳遞回給循環(huán)控制表達(dá)式(如果有),然后重新計(jì)算循環(huán)體。 如果出現(xiàn)了 label ,它聲明即將繼續(xù)執(zhí)

5、行的循環(huán)的標(biāo)簽。如果聲明了 WHEN那么循環(huán)的下一次執(zhí)行只有在 expression為真的情況 下才進(jìn)行。否則,控制傳遞給 CONTINUE后面的語句。CONTINUED以用于所有類型的循環(huán);它并不僅僅限于無條件循環(huán)。例如 :LOOP一些計(jì)算EXIT WHEN count > 100;CONTINUE WHEN count < 50;一些在 count 數(shù)值在 50 . 100里面時(shí)候的計(jì)算END LOOP;4)、WHILE << label >> WHILE expression LOOPstatementsEND LOOP label ;只要條件表達(dá)式為

6、真,WHILE語句就會不停在一系列語句上進(jìn)行循環(huán)條件是在每次進(jìn)入循環(huán)體的時(shí)候檢查的 .例如 :WHILE amount_owed > 0 AND gift_certificate_balance > 0 LOOP- 可以在這里做些計(jì)算END LOOP;WHILE NOT BOOLEAN_expression LOOP- 可以在這里做些計(jì)算END LOOP;5)、FOR (整數(shù)變種) << label >> FOR nameIN REVERSE expression . expression LOOP statementsEND LOOP labal ;這種形

7、式的FOR對一定范圍的整數(shù)數(shù)值進(jìn)行迭代的循環(huán)。變量name會自動定義為 integer 類型并且只在循環(huán)里存在。 給出范圍上下界的兩個(gè)表達(dá)式在進(jìn)入循環(huán)的時(shí) 候計(jì)算一次。 迭代步進(jìn)值總是為1,但如果聲明了 REVERS就是-1。一些整數(shù)FOR循環(huán)的例子:FOR i IN 1.10 LOOP 表示 1 循環(huán)到 10 這里可以放一些表達(dá)式 RAISE NOTICE 'i IS %', i;END LOOP;FOR i IN REVERSE 10.1 LOOP這里可以放一些表達(dá)式END LOOP;如果下界大于上界(或者是在REVERSE情況下是小于),那么循環(huán)體將完全不被執(zhí)行。 而且不會拋出任何

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論