mysql存儲過程實例

技術要點

一個存儲過程包括名字、參數列表,以及可以包括很多SQL語句的SQL語句集。下面爲一個存儲過程的定義過程:

create procedure proc_name (in parameter integer)begindeclare variable varchar(20);if parameter=1 thenset variable=’MySQL’;elseset variable=’PHP’;end

if;insert into tb (name) values (variable);end;

MySQL中存儲過程的建立以關鍵字create procedure開始,後面緊跟存儲過程的名稱和參數。MySQL的存儲過程名稱不區分大小寫,例如PROCE1()和proce1()代表同一個存

儲過程名。存儲過程名不能與MySQL數據庫中的內建函數重名。

存儲過程的參數一般由3部分組成。第一部分可以是in、out或inout。in表示向存儲過程中傳入參數;out表示向外傳出參數;inout表示定義的參數可傳入存儲過程,並

可以被存儲過程修改後傳出存儲過程,存儲過程默認爲傳入參數,所以參數in可以省略。第二部分爲參數名。第三部分爲參數的類型,該類型爲MySQL數據庫中所有可用的字

段類型,如果有多個參數,參數之間可以用逗號進行分割。

MySQL存儲過程的語句塊以begin開始,以end結束。語句體中可以包含變量的聲明、控制語句、SQL查詢語句等。由於存儲過程內部語句要以分號結束,所以在定義存儲過

程前應將語句結束標誌“;”更改爲其他字符,並且該字符在存儲過程中出現的機率也應該較低,可以用關鍵字delimiter更改。例如:

mysql>delimiter //

存儲過程創建之後,可用如下語句進行刪除,參數proc_name指存儲過程名。

drop procedure proc_name

實現過程

(1)MySQL存儲過程是在“命令提示符”下創建的,所以首先應該打開“命令提示符”窗口。
(2)進入“命令提示符”窗口後,首先應該登錄MySQL數據庫服務器,在“命令提示符”下輸入如下命令:

mysql –u用戶名 –p用戶密碼

(3)更改語句結束符號,本實例將語句結束符更改爲“//”。代碼如下:

delimiter //

(4)創建存儲過程前應首先選擇某個數據庫。代碼如下:

use 數據庫名

(5)創建存儲過程。
(6)通過call語句調用存儲過程。

舉一反三

– 建表
use test;
create table user(
id mediumint(8) unsigned not null auto_increment,
name char(15) not null default ”,
pass char(32) not null default ”,
note text not null,
primary key (id)
)engine=Innodb charset=utf8;

– 示例一
delimiter //
create procedure proc_name (in parameter integer)
begin
if parameter=0 then
select * from user order by id asc;
else
select * from user order by id desc;
end if;
end;
//

delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);
– 示例二
drop procedure proc_name;
delimiter //
create procedure proc_name (in parameter integer)
begin
declare variable varchar(20);
if parameter=1 then
set variable=’Windows’;
else
set variable=’Linux’;
end if;
select parameter;
end;
//

delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);

 

刪除drop procedure proc_name;

 

1.show procedure status;
顯示數據庫中所有存儲的存儲過程基本信息,包括所屬數據庫,存儲過程名稱,創建時間等
2.show create procedure sp_name
顯示某一個存儲過程的詳細信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章