剛開始學習oracle的儲存過程和觸發器等,也看了一些部落格論壇總結的知識點!
摘取了一些比較不錯的文章片段,拿來以備之後學習和鞏固!
在大型資料庫系統中,有兩個很重要作用的功能,那就是儲存過程和觸發器。在資料庫系統中無論是儲存過程還是觸發器,都是通過sql語句和控制流程語句的集合來完成的。相對來說,資料庫系統中的觸發器也是一種儲存過程。儲存過程在資料庫中運算時自動生成各種執行方式,因此,大大提高了對其執行時的執行速度。在大型資料庫系統如oracle、sql server中都不僅提供了使用者自定義儲存過程的功能,同時也提供了許多可作為工具進行呼叫的系統自帶儲存過程。
所謂儲存過程(stored procedure),就是一組用於完成特定資料庫功能的sql語句集,該sql語句集經過編譯後儲存在資料庫系統中。在使用時候,使用者通過指定已經定義的儲存過程名字並給出相應的儲存過程引數來呼叫並執行它,從而完成乙個或一系列的資料庫操作。
基本用法:
1.基本結構
create or replace procedure 儲存過程名字(引數
1 in number,
引數2 in number
) as
變數1 integer :=0;
變數2 date;
begin
end 儲存過程名字
2.select into statement
將select查詢的結果存入到變數中,可以同時將多個列儲存多個變數中,必須有一條
記錄,否則丟擲異常(如果沒有記錄丟擲
no_data_found)
例子:begin
select col1,col2 into 變數1,變數2 from typestruct where ***;
exception
when no_data_found then
***x;
end;
...3.if 判斷
if v_test=1 then
begin
do something
end;
end if;
4.while
迴圈while v_test=1 loop
begin
***x
end;
end loop;
5.變數賦值
v_test := 123;
6.用for in 使用
cursor
...is
cursor cur is select * from ***;
begin
for cur_result in cur loop
begin
v_sum :=cur_result.列名1+cur_result.列名2
end;
end loop;
end;
7.帶引數的cursor
cursor c_user(c_id number) is select name from user where typeid=c_id;
open c_user(變數值);
loop
fetch c_user into v_name;
exit fetch c_user%notfound;
do something
end loop;
close c_user;
8.用pl/sql developer debug
連線資料庫後建立乙個test window
在視窗輸入呼叫sp的**,f9開始debug,ctrl+n單步除錯
createorreplaceprocedure countsum(ver in char)
ascnt number;
begin
select count(*) into cnt from t_banknote where version=ver;
dbms_output.put_line('版本為2的個數:'||cnt);
end countsum;
儲存過程簡介
儲存過程是sql語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。一 使用儲存過程的優勢 1 模組化程式設計 只需建立過程一次並將其儲存在資料庫中,以後即可在程式中呼叫該過程任意次。2 執行效率的優化 大批量資料操作或重複執行時,儲存過程的優勢將得到很好的體現。只需在首次執行時對其...
儲存過程簡介
sql語句需要先編譯然後執行,而儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。儲存過程是可程式設計的函式,在資料庫中建立並儲存,可以由sql語句和控制結構組成。當...
儲存過程簡介
將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。儲存過程的優點 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,...