Oracle程式設計學習儲存過程 函式 游標

2021-05-27 19:00:31 字數 1812 閱讀 2985

oracle程式設計不同於sqlserver,日期函式和sqlserver不同,資料型別轉換和sqlserver不同,為了將oracle學習簡單化,重點指出幾個常見並且用得比較多的

函式日期函式:months_between(sysdate,指定時間)算出日期時間差

add_months(sysdate,1)返回增加月份數

next_day(sysdate,星期一)返回下周一

last_day(sysdate)返回當月最後一天

特殊函式: trunc(sysdate,'y')返回當年第一天

trunc(sysdate,'mm')返回當月第一天

trunc(sysdate,'dd')返回當天0點

trunc(sysdate,'hh')返回當時整時刻。。。。。

字串轉換:to_char(sysdate,'yyyymmdd')返回標準日期

to_char(sysdate,'d')返回星期+1

to_char('1000000','l999,999,999.99')返回金錢格式四捨五入到小數點2位

確定一年內天數select add_months(trunc(sysdate,'y'),12))-trunc(sysdate,'y') from dual

以下是儲存過程:

--根據主鍵判斷是否插入資料

create or replace procedure addone(ppid test_pp.pp_id%type,pp_name test_pp.pp_name%type,

pp_demo test_pp.pp_demo%type)

as a number;

begin

select count(1) into a from test_pp where test_pp.pp_id=ppid;

if a=0

then

insert into test_pp values (ppid,pp_name,pp_demo);

end if;

end;

以下是函式:

--返回使用者名稱

create or replace function findone(ppid test_pp.pp_id%type)return test_pp.pp_name%type

is n test_pp.pp_name%type;

begin

select pp_name into n from test_pp where test_pp.pp_id=ppid;

return n;

end;

以下是游標:

--使用游標迴圈輸出

declare cursor mycur is select *from test_pp;

pp test_pp%rowtype;

begin

for pp in mycur loop

dbms_output.put_line('name:'||pp.pp_name);

dbms_output.put_line('demo:'||pp.pp_demo);

end loop;

如果能寫好以上儲存過程、函式、游標,同時要理解索引的作用,索引使用應該注意哪些,了解檢視的原理,知道sql語句優化規範,善於使用價效比高的sql語句(當然,這裡的性是指效能,價是指執行效率),以及資料庫的一些安全性。學習oracle其實不難,做到這些基本上掌握了oracle理念,對於開發人員來說已經足夠了,那些大型企業的面試題看似很難,只要再掌握sql子查詢、聯合查詢、條件查詢、函式查詢,就很容易對付了。 

Oracle儲存過程學習

儲存過程是一組為了完成特定功能的 sql 語句塊,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。1 儲存過程和函式以命名的資料庫物件形式儲存於資料庫當中。儲存在資料庫中的優點是很明顯的,因為 不儲存在本地,使用者可以在任何客戶機上登入到資料庫,並呼...

Oracle儲存過程學習

儲存過程建立語法 create or replace procedure 儲存過程名 param1 in type,param2 out type as 變數1 型別 值範圍 變數2 型別 值範圍 begin select count into 變數1 from 表a where列名 param1 ...

Oracle儲存過程學習

儲存過程建立語法 create or replace procedure 儲存過程名 param1 in type,param2 out type as 變數1 型別 值範圍 變數2 型別 值範圍 begin select count into 變數1 from 表a where列名 param1 ...