儲存過程,就是帶有名字的乙個程式塊。
是指程式塊建立之後,儲存在資料庫內部,然後我們可以在自己寫的程式中通過某種手段呼叫這段程式。
一般是通過儲存過程的名字來呼叫,就類似使用乙個方法或者函式一樣。可以設定是否傳入引數,和是否有返回值。
呼叫完後這段程式塊就會自動做一些操作,做的操作就是我們定義的儲存過程的內容。比如像某張表插入某些資料,或者根據條件修改某條資料。
儲存過程的優點:1、儲存過程因為sql語句已經預編繹過了,因此執行的速度比
較快。
2、儲存過程執行比較穩定,不會有太多的錯誤。
3、儲存過程可以在單個儲存過程中執行一系列 sql 語句。
4、儲存過程可以從自己的儲存過程內引用其它儲存過程,這可
以簡化一系列複雜語句。…等其他優點
(不同的資料庫的儲存過程,都是用當前自己這個資料庫的程式語言來編寫的,下面舉例oracle中的用法)
1.基本結構
create
or replace procedure 儲存過程名字
(引數1 in number,
引數2 in number)is
變數1 integer :=0;
變數2 date;
begin
//儲存過程內容
end ;
2.if判斷
if l_count <> 0
then
***x--需要執行的操作**
endif;
3.while迴圈
while v_test<10
loop
begin
***x--需要執行的操作**
end;
endloop;
4.變數賦值
l_test :=123;
5.select查詢結果存入變數中,可以同時存入多個列到多個變數中,要確保至少查到一條資料,否則會返回乙個錯誤:nodatafound。(可提前做個判斷,select count(*) …)
select no,name
into l_no,l_nae
from t_student
where ...
6.可以在儲存過程中呼叫儲存過程,與程式中的方法和函式類似,若有引數則考慮確保傳入的引數型別、數量、順序一致,還可以設定返回值。
簡單例子:
create or replace procedure p_student
/*create or replace procedure是讓資料庫開始建立儲存過程,後面緊接著儲存過程的名稱,若已經存在,執行後則覆蓋原先的儲存過程*/
(/*括號裡為儲存過程需要的引數,可定義為傳入,也可定義為傳出,還可以同時定義為傳入傳出型別*/
m_student_no in
number,--(傳入)引數1 student_no
m_score in
number, --(傳入)引數2 name
res in out varchar2 --(傳入傳出)引數3 res 《最後乙個引數不需要新增符號','>
) as
--定義儲存過程中需要用到的變數
l_count number;
l_name varchar2(50);--型別(值範圍)
l_score number;
begin --開始(begin end中至少有一句語句,可以為null)
res: = '';
--儲存過程內容
select count(*)
into l_count
from t_student stu
where stu.no = student_no;
if l_count > 0
then --if迴圈的固定格式
//修改
update t_student
set score = m_score
where no = m_student_no;
//查詢
select name,score
into l_name,l_score
from t_student stu
where stu.no = m_student_no;
//返回值
res := '學生:'||l_name|| '成績:'||m_score ; --通過||來連線字串與變數值
endif;--if迴圈的固定格式
end ;--結束
儲存過程基本語法
儲存過程可以看作是在資料庫中sql語句的集合,通過執行儲存過程來達到對資料庫的操作,它實現功能和sql語句實現的功能是一樣的,但是兩者在語法上有很大不同,下面介紹儲存過程的用法。1 宣告變數 在儲存過程中宣告變數用declare關鍵字語法如下 declare 示例 declare studentid...
oracle 儲存過程基本語法
1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin end 儲存過程名字 2.select into statement 將select查詢的結果存...
oracle儲存過程基本語法
1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin end 儲存過程名字 2.select into statement 將select查詢的結果存...