oracle筆記1 FUNCTION 函式

2021-07-13 13:14:33 字數 1763 閱讀 9944

create

orreplace function f_get_bzgs(i_ny varchar2)

return number

as v_sql_bzgs varchar2(2000);

v_ksrq date := add_months(to_date(i_ny || '-21', 'yyyy-mm-dd'), -1);

v_jsrq date := to_date(i_ny || '-20', 'yyyy-mm-dd');

v_bzgs number;

begin

v_sql_bzgs := 'select

nvl(sum(working_hours),0) working_hours

from c_company_holidays_info t

where t.day_type = ''工作日''

and t.working_hours > 0

and t.day_date>=to_char(:v_ksrq,''yyyy-mm-dd'')

and t.day_date<=to_char(:v_jsrq,''yyyy-mm-dd'')';

begin

execute

immediate v_sql_bzgs

into v_bzgs

using v_ksrq, v_jsrq;

exception

when no_data_found then

v_bzgs := 0;

end;

return v_bzgs;

end;

1、建立函式的語句塊

create or replace function f_get_bzgs(i_ny varchar2)

return number as

–在這定義引數

begin

這裡寫**塊

end;

2、i_ny 為函式的引數,定義為varchar2型別,函式可以無參,也可以多個引數,視具體情況而定。

3、return number–說明這個函式的返回值型別是number,

當然函式的返回值型別也可以其他,還可以是table

3.1 如果要返回table型別

create

orreplace type type_table1_resul as object

( sid varchar2(50)

)

create

orreplace type type_table1_resul_table as

table

of type_table1_resul

先定義乙個table型別的物件。

這樣我們就可以在定義函式的時候 return type_table1_resul_table

返回定義的table型別,在定義變數的時候要申明

v_table1 type_table1_resul_table :=type_table1_resul_table();

v_sid varchar2(50);

最後將要返回的資料,迴圈插入到type_table1_resul中

v_table1.extend();

v_table1( v_table1.count) :=type_table1_resul v_sid);

return v_table1;

20180807模擬測試 t1 function

low逼的我也只能寫這樣的水題。對於乙個整數,定義 f x 為他的每個數字的階乘的乘積。例如 f 135 1 3 5 720。給出乙個數 a 可以包含字首零 a 滿足他的至少乙個數字大於 1。我們要求出最大 的整數 x,其中 x 不含 0 或 1,並且滿足 f a f x 輸入 第一行乙個整數 n,...

oracle學習筆記1

oracle安裝會自動的生成sys 使用者 和 system使用者 1 sys使用者是 超級使用者,具有最高許可權,具有sysdba角色,有create database 的許可權,預設密碼manager 2 system使用者是 管理操作員,許可權也非常大,具有sysoper角色,沒有create...

Oracle 學習筆記1

建立表空間 create tablespace 空間名稱 建立使用者 create user 使用者名稱 identified by 密碼 授權 grant dba to 使用者名稱 dmp檔案匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager,例項名test 匯出到d ...