MYSQL儲存過程的建立 呼叫和檢視

2021-10-07 16:00:58 字數 1637 閱讀 2827

create

[definer = ]

procedure sp_name ([proc_parameter[,...]])

[characteristic ...] routine_body

proc_parameter:

[ in | out | inout ] param_name type

characteristic:

comment 'string'

| language sql

| [not] deterministic

| | sql security

routine_body:

valid sql routine statement

[begin_label:] begin

[statement_list]

……end [end_label]

in、out、inout 三種引數
in 輸入引數:

表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值

out 輸出引數:

該值可在儲存過程內部被改變,並可返回

inout 輸入輸出引數:

呼叫時指定,並且可被改變和返回

簡化
create

procedure sp_name([[in |out |inout ] 引數名 資料類形...])

begin

routine_body

end

delimiter // 或 delimiter ; 為修改分割符

mysql預設分割符為; 若不宣告編譯器會當成sql處理,則編譯報錯。

事先修改分割符使編譯儲存過程成功。並在事後還原分割符

注: 若使用mysql管理工具可以不需要宣告分割符

call sp_name([proc_parameter[,...]])
示例
delimiter //  

create procedure proc(in a int)

begin

select a;

set a=10;

select a;

end//

delimiter ;

#呼叫set @a = 1;

call proc(@a)

select routine_name,routine_type from mysql.proc where db='資料庫名';
或者

select routine_name,routine_type from information_schema.routines where routine_schema='資料庫名';
或者

show procedure status where db='資料庫名';

MySQL建立 呼叫儲存過程

今天我們搞一搞mysql的儲存過程,過程中踩了一些小坑,算是做個總結歸納 首先,我們了解一下儲存過程的建立語句 create procedure index statistic in flag varchar 10 out result int,inout num int begin if flag...

MySQL儲存過程的建立和呼叫

mysql儲存過程弱爆了。下面這個建立 任何地方不匹配都報錯,包括空格!delimiter begin 許可權檢查 by wuzude 2018 01 22 ver 1.0 declare rawsum int 1 default 0 行計數器 declare projid int 4 defaul...

MySQL儲存過程的建立和呼叫

建立 delimiter create procedure authenti in p1 varchar 32 in p2 varchar 32 in p3 varchar 32 in p4 varchar 45 out p5 int begin 許可權檢查 by wuzude 2018 01 22...