mysql儲存過程學習筆記

2022-07-29 13:21:08 字數 4197 閱讀 5748

1.儲存過程簡介

我們常用的運算元據庫語言sql語句在執行的時候需要要先編譯,然後執行,而儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。

乙個儲存過程是乙個可程式設計的函式,它在資料庫中建立並儲存。它可以有sql語句和一些特殊的控制結構組成。當希望在不同的應用程式或平台上執行相同的函式,或者封裝特定功能時,儲存過程是非常有用的。資料庫中的儲存過程可以看做是對程式設計中物件導向方法的模擬。它允許控制資料的訪問方式。

儲存過程通常有以下優點:

(1).儲存過程增強了sql語言的功能和靈活性。儲存過程可以用流控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。

(2).儲存過程允許標準元件是程式設計。儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句。而且資料庫專業人員可以隨時對儲存過程進行修改,對應用程式源**毫無影響。

(3).儲存過程能實現較快的執行速度。

2.關於mysql的儲存過程

儲存過程是資料庫儲存的乙個重要的功能,但是mysql在5.0以前並不支援儲存過程,這使得mysql在應用上大打折扣。好在mysql 5.0終於開始已經支援儲存過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。

3.mysql儲存過程建立

mysql儲存過程建立的格式:create procedure 過程名 ([過程引數

[,...]])

[特性 ...] 過程體

這裡先舉個例子:

delimiter 

create

procedure proc1(out s int

)

begin

select

count(*) into s from

user

;

enddelimiter ;

注:(1)這裡需要注意的是delimiter //和delimiter ;兩句,delimiter是分割符的意思,因為mysql預設以";"為分隔符,如果我們沒有宣告分割符,那麼編譯器會把儲存過程當成sql語句進行處理,則儲存過程的編譯過程會報錯,所以要事先用delimiter關鍵字申明當前段分隔符,這樣mysql才會將";"當做儲存過程中的**,不會執行這些**,用完了之後要把分隔符還原。

(2)儲存過程根據需要可能會有輸入、輸出、輸入輸出引數,這裡有乙個輸出引數s,型別是int型,如果有多個引數用","分割開。

(3)過程體的開始與結束使用begin與end進行標識。

引數

mysql儲存過程的引數用在儲存過程的定義,共有三種引數型別,in,out,inout,形式如:

create procedure([[in |out |inout ] 引數名 資料類形...])

in輸入引數:表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值

out輸出引數:該值可在儲存過程內部被改變,並可返回

inout輸入輸出引數:呼叫時指定,並且可被改變和返回

變數

ⅰ.變數定義

declare variable_name [,variable_name...] datatype [default value];

其中,datatype為mysql的資料型別,如:int, float, date, varchar(length)

例如:declare l_int int unsigned default 4000000;  

declare l_numeric number(8,2) default 9.95;  

declare l_date date default '1999-12-31';  

declare l_datetime datetime default '1999-12-31 23:59:59';  

declare l_varchar varchar(255) default 'this will not be padded';    

ⅱ.變數賦值

set 變數名 = 表示式值 [,variable_name = expression ...]

使用者變數:

①使用者變數名一般以@開頭

select

'hello world

'into

@x;

select

@x;

mysql儲存過程的呼叫

用call和你過程名以及乙個括號,括號裡面根據需要,加入引數,引數包括輸入引數、輸出引數、輸入輸出引數。具體的呼叫方法可以參看上面的例子。

mysql儲存過程的修改

用alter procedure更改,用create procedure 建立。

mysql儲存過程的刪除

drop procedure

條件語句

. if-then -else語句

delimiter 

create

procedure proc2(in parameter int

)

begin

declare

varint

;

setvar

=parameter+

1;

ifvar=0

then

insert

into t values(17

);

endif

;

if parameter=

0then

update t set s1=s1+

1;

else

update t set s1=s1+

2;

endif

;

end;

delimiter ;

. case語句:

delimiter   

create

procedure proc3 (in parameter int

)

begin

declare

varint

;

setvar

=parameter+

1;

case

varwhen

0then

insert

into t values(17

);

when

1then

insert

into t values(18

);

else

insert

into t values(19

);

endcase

;

end;

delimiter ;

迴圈語句

. while ···· end while

mysql學習筆記 儲存過程

sql view plain copy use test drop table if exists t8 create table t8 s1 int,primary key s1 drop procedure if exists handlerdemo delimiter create proce...

Mysql儲存過程學習筆記

在pl sql中,主要包括declare部分 宣告引數 begin.end部分和例外部分。mysql儲存過程建立的格式 create procedure過程名 過程引數 特性.過程體 選中 函式右鍵 新建建立 完成 輸入函式體 儲存名字 語法 create procedire 儲存過程命名 開始 函...

mysql儲存過程學習筆記

儲存過程理解 1.儲存過程 類似函式或者方法,是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。2.mysql儲存過程的建立 mysql儲存過程建立的格式 create procedure 過程名 過程引數 特...