建立
『;』為建立儲存過程的結束標誌,使用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,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...