儲存過程是一組預先編譯好的sql語句的集合,可理解成批處理語句。它的優點主要有以下幾點:
1、提高**的重用性;
2、簡化操作;
3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率。
delimiter 定界符
create procedure 儲存過程名(形參列表)
begin
儲存過程體(一組合法的sql語句)
end 定界符
但mysql實際儲存的儲存過程定義可能並沒有這麼簡單:
在使用儲存過程的時候,一定要注意引數列表中,每個形參的定義都包含三部分:
引數模式 (in、out、inout)、引數名、引數型別
例如:
in stuname varchar(10)
牢記引數模式分為三種:
in: 該模式引數僅可以作為輸入值使用。
out: 該模式引數僅可以作為輸出值使用,從儲存過程並沒有類似函式那樣的返回值,通過定義out 模式的引數,可以讓儲存過程攜帶返回值。
inout: 該模式引數既可以作為輸入,也可以作為輸出。
另外,如果儲存過程體僅有一句話,可以省略 begin 和 end 。儲存過程體的每條sql 語句要求必須以分號結尾!
定義儲存過程需要設定乙個定界符,代表儲存過程定義完畢,一般使用 $ 、& 等特殊字元均可。
注意,儲存過程一旦建立,將無法修改(儲存體),如果希望修改,可以刪除後重建。刪除儲存過程的方法和 drop table 類似,只是將 table 關鍵字換為 procedure 即可。
檢視建立好的儲存過程可以使用:
show create procedure 儲存過程名;
call 儲存過程名(實參列表);
函式和儲存過程很類似,也是是一組預先編譯好的sql語句的集合,類似於批處理語句。提供了**重用性,簡化操作,同時減少了編譯次數,並且減少了和資料庫伺服器的連線次數,提供了效率。
但是和儲存過程也有所不同,他們的區別主要是:
儲存過程:可以沒有返回值,也可以有多個返回值,適合做批量插入,批量更新。
函式:有且僅有 1 個返回值,適合做處理資料後返回乙個結果。
create function 函式名(引數列表) returns 返回型別
begin
函式體end
引數列表中的每個引數包含兩部分:
引數名、引數型別
函式體必須要有 return 語句,並且與"函式簽名" 中的 returns 型別相對應,否則會報錯。一般將 return 語句放在函式體的最後,其他位置不建議。
函式體如果只有一句話,同樣可以像儲存過程一樣省略 begin 和 end 。
函式定義同樣需要 delimiter 設定定界符。
select 函式名(實參列表);
MySql儲存過程與儲存函式
在開發過程種常常會重複使用某些sql語句,為此mysql sdsd 先建立乙個表 create table user insert user username,password values jacklove qqqqqq insert user username,password values u...
MYSQL儲存過程與函式
二 儲存過程與儲存函式 語法如下 create procedure sp name proc parameter characteristic routine body create function sp name func parameter returns type characteristi...
MYSQL儲存過程與函式
二 儲存過程與儲存函式 語法如下 create procedure sp name proc parameter characteristic routine body create function sp name func parameter returns type characteristi...