oracle函數,游標,視圖使用總結


oracle函數或者叫存儲過程,在實際的開發過程中對於復雜的業務需求是非常有用的,非常有效率的也是非常好玩兒的一個技術點。

平常在開發過程中對於CRUD功能較多。一般SQL即可應付,大不了就是長一點而已。但是遇到復雜業務需求,在Java代碼中開發略顯混亂時,函數將可以作為一個非常優秀的實現方式,在數據庫中對業務進行處理。

下面介紹一下oracle函數的集中語法,小弟學藝不精,如有遺漏,請不吝指正:

oracle語法在編寫過程中其實比較簡單,首先它是一個腳本語言,也叫作解釋性語言,腳本語言如python,js等的共有特點就是從上到下一行一行的執行。也就是說我們只要符合函數的語法,我們可以隨意在函數里面寫DML語句(CRUD)、DCL(GRANT)、DDL語句等,所有初次編寫函數的時候可能無從下手,但其實語法非常隨意。

1、那其實,首先我們需使用create or replace語句來創造函數,為什么要加一個replace(替代)單詞,其實意思就是,由函數重名的情況就替換掉,這是因為在函數發包的時候可能要替換掉原來的函數。例子:

create or replace fn_xxx_aaa(arg1.arg2....)

end fn_xxx_aaa;

2、變量的定義

所謂函數,肯定要有參數,有返回值。但是oracle函數多了一個叫做輸出值,也是程序調用之后可以接受到的一些查詢結果或是游標。輸入輸出值定義在括號內。

3、游標及循環

其實游標就是一個緩存,例如,我們在函數里面進行判定的時候,我們可能需要遍歷一個表的數據,那我們不能去把表里面的數據都查一遍,這樣太浪費資源了,而且數據庫是一種非常稀有的資源,所以我們就要把所有的數據都查出來,存在游標里面,去循環它,這樣也可以得到游標里面的所有數據。

declare cursor XX_XX_XX is 

  select * from aaa;

begin

open cursor;

loop

fetch XX_XX_XX into xx x xx xx x;

exit when XX_XX_XX%NOTFOUND;

  begin 

xxxxxxxxxxxxxxxxxxx

  end;

end loop;

end;

上面的就是最簡單的游標配合循環做業務的一些處理。先將游標數據抓取賦值給定義的某種變量,然后拿着變量一點一點做循環判斷,對數據進行處理。

4、除了游標之外呢,還有一種東西也是常用到的一種東西,視圖。

視圖其實什么也不是,為什么說他什么也不是呢,因為視圖就根本不存在,我們定義完了視圖之后呢,其實就是在你的 sql之后添加了一些sql,比如說我們create了一個視圖,其實還是將兩個或者多個集合的數據搞到一個集合里面了,也就是你這個sql后面有添加了一段sql。

5、還有一個東西,表分區。

雖然做完之后效果不明顯吧,但是畢竟對Linuxoracle服務器熟悉了,數據泵文件導入導出也很熟悉了。好吧,下一篇文章寫數據泵文件的導入導出以及表分區。

 

第一次寫這么長的博客,小弟年齡肯定比各位看官想的小得多,所以請隨意指教,謝謝各位看官,希望對您對我都有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM