oracle function详解,Oracle 函数 Function 解析
定義
函數用于計算和返回一個結果值,把經常需要進行的計算寫成函數,函數的調用是表達式的一部分。
函數與過程在創建的形式上有些相似,也是編譯后放在內存中供用戶使用。
函數必須有一個返回值,而過程沒有做強制的規定。
RETURN在聲明部分需要定義一個返回參數的類型,而在函數體中必須有一個RETURN語句。如果函數結束時還沒有遇到返回語句,就會發生錯誤。
創建
create or replace function Fn_First
return varchar2? ? --不需要長度
is
Result varchar2(100);? ? --declare,長度定義。
begin
NULL;
return(Result);
end Fn_First;
調用方法一
declare
var_str varchar(100);
begin
var_str := fn_first();
dbms_output.put_line(var_str);
調用方法二
select? fn_first() from dual;
項目應用
帶輸入參數
CREATE OR REPLACE FUNCTION SF_PUB_STRMINUSINT
(p_beg in varchar2,
p_end in varchar2
)
return int
/**
AUTH
FUNC? 兩個隨機號相減得數
**/
AS
v_ret? int;
vs_geb? varchar2(30);
vs_str? varchar2(30);
vn_beg? int;
vs_dne? varchar2(30);
vn_end? int;
begin
--反轉
select reverse(p_beg) into vs_geb from dual;
--正則
select regexp_substr(vs_geb,'[0-9]+',1,1) into vs_str from dual;
--取得隨機碼
select to_number(reverse(vs_str)) into vn_beg from dual;
--止號
select reverse(p_end) into vs_dne from dual;
--正則
select regexp_substr(vs_dne,'[0-9]+',1,1) into vs_str from dual;
--取得隨機碼
select to_number(reverse(vs_str)) into vn_end from dual;
v_ret:=vn_end-vn_beg+1;
return v_ret;
end SF_PUB_STRMINUSINT;
以對象返回數據列表
create or replace function fn_test
( pid in number
)
return
tabTEST
is
Result tabTEST =tabTEST();
USERID number(12);
VNAME varchar(200);
orgid? number(12);
type tab is table of number;
tab_test1 tab;
/***
create or replace type ctest as object
(
cUser? number(12),? --不可注釋
cName? varchar(200),
cOrg? number(12)
)
create or replace type tabTEST is table of ctest
測試
select? from table(cast(fn_test({0})as tabTEST))
***/
begin
select ID bulk collect into tab_test1 from tuser where id=pid;
Result =tabTEST();
for i in 1..tab_test1.count loop
select ID,name,belongorg into USERID,VNAME,orgid from tuser where ID=tab_test1(i);
Result.extend;
Result(Result.count)=ctest(NULL,NULL,NULL);
Result(Result.count).cUser=USERID;
Result(Result.count).cName=VNAME;
Result(Result.count).cOrg =orgid;
end loop;
return(Result);
end fn_test;
總結
以上是生活随笔為你收集整理的oracle function详解,Oracle 函数 Function 解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 住房抵押贷款证券化的操作流程
- 下一篇: win7去密码忘记了怎么办 如何重置wi