oracle資料庫中的函式

2021-09-21 07:21:39 字數 2959 閱讀 9228

在oracle資料庫中,自定義函式實際是一組pl/sql的語句的組合,並且自定義的函式必須有返回值。

create

orreplace

function

'函式名'

return

'返回值的型別'

asbegin

'函式定義的邏輯'

end'函式名'

;

該語句是建立不帶任何引數的簡單函式。

create

orreplace

function getemployeecount return number as

begin

declare employee_count number;

begin

select

count(1

)into employee_count from employee;

return employee_count;

end;

end getemployeecount;

該語句建立例乙個統計資料表"employee"中一共有多少行資料的函式"getemployeecount"。

在oracle資料庫中如果需要定義有參的函式時,只需要在宣告語句的函式之後新增小括號,並且在小括號中指定引數的資料型別和名稱即可。

create

orreplace

function gettablecount(table_name varchar2)

return number as

begin

declare record_count number;

query_sql varchar2(

200)

;begin

query_sql :=

'select count(1) from '

|| table_name;

execute immediate query_sql into record_count;

return record_count;

end;

end gettablecount;

該語句建立例乙個有參函式,該函式可以統計r資料表中任何資料表中一共有多少行資料。其中"execute immediate"表示立刻執行後面的sql語句(「query_sql」);"||"在oracle資料庫中起拼接的作用,此時"from"後面必須有空格,否則,在拼接時,直接將"from"和"table_name"拼接在一起,這樣在定義函式時,不會報錯,但是在執行時會報錯。

直接使用

select gettablecount(

'student'

)from dual;

pl/sql環境中使用

declare table_name varchar2(50)

;begin

table_bame :=

'student'

; dbms_output.put_line(

'資料表'

|| table_name ||

'的記錄數為'

|| gettablecount(table_name));

end;

在oracle資料庫中,當乙個函式的函式傳遞引數值一定,函式結果為唯一值時,這樣的函式被稱為具有確定性的函式。

確定性函式可以根據引數值來快取執行結果,當乙個具有確定性的函式在第二次執行同乙個引數值時,oracle資料庫會直接獲取快取值,而不在去執行實際的**,從而提高工作效率。

oracle資料庫中使用"deterministic"關鍵字來表示函式具有確定性,但是必須保證該函式在傳入相同的引數值時,結果必須為唯一值,否則不能使用"deterministic"關鍵字來上面該函式。上面的"gettablecount()"函式就不具有確定性,因為資料表中的資料數是可以變的。

create

orreplace

function getwateramount(tom number,unitprice number)

return number deterministic

asbegin

declare wateramount number;

begin

if(ton <=2)

then

wateramount := unitprice * ton;

endif;if

(ton >

2and ton <=4)

then

wateramount := unitprice *2+

(ton -2)

*2* unitprice;

endif;if

(ton >4)

then

wateramount := unitprice *2+

2*2* unitprice + unitprice *4*

(ton -4)

;endif;

return wateramount;

end;

end getwateramount;

該函式就是乙個具有確定性的函式。

drop

function

'函式名'

;

該語句可以刪除自定義的函式。

Oracle資料庫中的函式

1 隨機數函式 dbms random.random 1 select abs mod dbms random.random,100 from dual 產生乙個100以內的隨機數 2select trunc 100 900 dbms random.value from dual 產生乙個100 1...

oracle資料庫中listagg函式的使用

公司有三個平台,同乙個客戶拿手機號在三個平台都註冊了,但註冊過的使用者名稱不一樣,顯示的時候需要根據手機號顯示所有註冊過的名稱。1 原始資料是這樣的,如圖 2 要求顯示成這樣,如圖 3 sql函式 select phone,listagg log name,within group order by...

Oracle資料庫中count函式的用法

oracle資料庫中count函式的用法 count用來統計查詢結果有幾條記錄 例表 t test 姓名 性別 年齡 工資 張三 男 李四 女 王武 男 簡單應用 查詢 select count from t test 結果 3 解釋 以上查詢將返回表t test中記錄的條數。帶where條件的應用...