MySQL儲存過程

2021-09-12 23:00:47 字數 2313 閱讀 1063

mysql儲存過程

儲存過程

定義儲存過程

delimiter ;;

create procedure get_user_count()

begin

select count(*) as user_count from sys_user;
end;;

delimiter;

關於分隔符

mysql語句分隔符為;,mysql命令列程式也使用;作為語句分隔符。如果通過命令列執行儲存過程會解釋儲存過程自身內的;字元,會使儲存過程中的sql出現語法錯誤。

呼叫儲存過程

call get_user_count();

刪除儲存過程

drop procedure get_user_count;

使用引數

引數中有out

-- 使用引數

-- in 傳遞到儲存過程

-- out 從儲存過程傳出

-- inout 對儲存過程傳入和傳出

delimiter ;;

create procedure get_count(

out user_count int(10),

out role_count int(10),

out dict_count int(10))

begin

select count(*) into user_count from sys_user;

select count(*) into role_count from sys_role;

select count(*) into dict_count from sys_dict;

end;;

delimiter ;

-- 呼叫

-- 所有mysql變數都必須以@開始

-- 不能通過乙個引數返回多個行和列

call get_count(@user_count, @role_count, @dict_count);

select @user_count, @role_count, @dict_count;

引數中有in有out

drop procedure if exists get_user_by_name;

delimiter ;;

create procedure get_user_by_name(

in user_name varchar(45),

out user_id int(10))

begin

select id from sys_user where user_name = user_name limit 1 into user_id;
end;;

delimiter ;

-- 呼叫

call get_user_by_name('admin', @admin_id);

select @admin_id;

複雜一點的

-- comment 給儲存過程加注釋

-- 定義

delimiter ;;

create procedure insert_user(

in username varchar(50),

in defaultpass boolean,

out userid int

) comment 'create user'

begin

declare pass varchar(50) default null;

if defaultpass then

set pass = '123456';

end if;

insert into sys_user(user_name, user_password, create_time)

values (username, pass, now());

select last_insert_id() into userid;

end;;

delimiter ;

-- 呼叫

call insert_user('張三', false, @userid1);

call insert_user('李四', true, @userid2);

select @userid1, @userid2;

select id, user_name, user_password, create_time from sys_user;

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...

mysql 儲存過程 MySQL儲存過程

目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...