mysql 儲存過程 mysql 儲存過程

2021-10-17 22:32:54 字數 3423 閱讀 2565

建立

『;』為建立儲存過程的結束標誌,使用delimiter $$可更改標誌

格式create procedure ()

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;

引數引數型別:in、out、inout代表輸入、輸出、輸入輸出

in可以為常量或變數

輸入引數只作為引數傳遞,不改變自身值

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,輸入引數只作為引數傳遞,不改變自身值

out只能為變數

輸出引數會改變引數值

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,儲存過程會改變輸出引數值

inout

只能是變數

既可以向過程傳遞引數,也可以將引數作為返回值

變數定義

區域性變數

定義declare default

區域性變數只能在儲存過程中定義

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;

into

可用於查詢變數賦值

set @cnt = 0;

select count(*) into cnt from tb_user;

begin/end作用域

begin/end可命名,區域性變數作用域只在當前語句內

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;

if/else

if then

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

else

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

end if;

end;

case

語法case

when then

when then

else

end case;

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;

while

語法while do

end while;

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儲存過程

儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。mysql 儲存過程是從mysql 5.0開始增加的新功能。大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的...

《Mysql儲存過程程式設計》之初始mysql儲存過程

json code 12 3456 78910 1112 1314 1516 171 什麼是儲存過程?過程就是把若干條sql組合起來並起乙個名字即沒有返回值的函式 通過其他方式返回 把過程儲存在資料庫中就是儲存過程 2 第乙個儲存過程,建立簡單儲存過程語法 create procedure proc...

mysql儲存過程 MySQL儲存過程

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