mysql 儲存過程

2022-07-25 12:06:09 字數 3586 閱讀 8569

create procedure([<in | out | inout> ])

begin

sqlend;

create procedure myprocedure(in param integer)

begin

select * from tb_role where tb_role.role_id = param;

end;

drop procedure myprocedure;
call myprocedure(1);
show procedure status where db='database_name';
show create precedure database_name.procedure_name;
引數型別:inoutinout代表輸入、輸出、輸入輸出

create procedure testparam(in param integer)

begin

select param;

set param = 2;

select param;

end;

------------

set @param = 1;

call testparam(@param);

select @param; --此時param為1,輸入引數只作為引數傳遞,不改變自身值

create procedure testparam(out param integer)

begin

select param; -- 此處為null,因為out是向呼叫者輸出引數,不接收輸入的引數,所以儲存過程裡的p_out為null

set param = 2;

select param;

end;

------------

set @param = 1;

call testparam(@param);

select @param; --此時param為2,儲存過程會改變輸出引數值

定義

declaredefault

create procedure testvar()

begin

declare var varchar(20) default 'hello world!'; -- 區域性變數定義

select var as title;

end;

賦值

create procedure testvar()

begin

declare var varchar(20) default 'hello world!'; -- 區域性變數

set var = '你好世界';

select var as title;

end;

定義

set @param = 'hello world!';
刪除/賦值

set @param = null;
可用於查詢變數賦值

set @cnt = 0;

select count(*) into cnt from tb_user;

create procedure test()

begin

begin

declare var varchar(20) default '123';

begin

declare var varchar(20) default '456';

select var title; --456

end;

select var title; -- 123

end;

end;

ifthen

else

end;

create procedure get_user_name(in param integer)

begin

declare cnt integer default 0;

select count(*) into cnt from tb_user;--將統計值賦值給區域性變數--

if param > cnt then

select concat('param need <', cnt) 'msg';

else

select u.name 'name' from tb_user u where u.user_id = param;

end if;

end;

create procedure test_case(in param integer)

begin

case param

when 1 then

insert into tb_auth (auth_name, auth_desc, create_time)

value('test','',date_format(now(),'%y-%m-%d'));

when 2 then

insert into tb_auth (auth_name, auth_desc, create_time)

value('test','',date_format(now(),'%y-%m-%d %h:%i:%s'));

else

insert into tb_auth (auth_name, auth_desc, create_time)

value('test','',date_format(now(),'%h:%i:%s'));

end case;

end;

create procedure test_while(in param integer)

begin

declare cnt integer default 0;

while cnt < param do

insert into tb_role (role_name, role_desc, create_time) value('','','');

set cnt = cnt + 1;

end while;

end;

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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...