mysql儲存過程和函式

2021-08-20 19:06:43 字數 2810 閱讀 5789

儲存過程是一系列sql語句集,具有靈活性,速度快,批處理、安全等特點;缺點:程式設計複雜、需要建立資料庫物件的許可權

掌握儲存過程的定義、檢視、修改、刪除;

定義儲存過程:

create procedure pro_name(parameter type)

[characteristic]  routine_body;

pro_name 儲存過程名

parameter 儲存過程引數 

語法:in|out|inout parameter_name type

characteristic :儲存過程特性

取值:language sql:表示routine_body 由sql語言組成,mysql軟體

預設語言

[not] deterministic:表示儲存過程的執行結果是否確定

sql語言限制:

contain sql:包含sql語言,但不包含寫資料的語言

(預設值)

no sql:不包含sql語言

reads sql data:包含讀資料的語言

modifies sql data:包含寫資料的語言

sql security(definer|invoker):表示誰有許可權來執行(定義者

(預設)|呼叫者)

comment 'string':注釋語句

定義變數:

select @val_name;(使用者變數),可以用於當前整個鏈結

declare val_name type [default  預設值](區域性變數),用於sql語句塊中

變數賦值

set @val_name=3;

select @val_name:=3;

呼叫儲存過程:

call procedure_name();

檢視儲存過程:

通過mysql.proc檢視

1、select  name from mysql.proc where db='db_name';

通過information_schema.routine 檢視

2、select routine_name from information_schema.routines where routine_schema='db_name';(檢視某一資料庫下所有的儲存過程和函式的名稱)

select * from information_schema.routines where routine_name='procedure_name';(檢視某一儲存過程的全部資訊)

information_schema

資料庫下的routines表中,儲存著所有儲存過程和函式的定義如果使用select語句查詢routines表中的儲存過程和函式的定義時,一定要使用routine_name欄位指定儲存過程或函式的名稱。否則,將查詢出所有的儲存過程或函式的定義

通過procedure status 檢視

3、show procedure status where db='db_name';

檢視儲存過程詳細資訊

4、show create procedure db.procedure_name;

5、檢視儲存過程和函式的狀態:g

show proceure|function status like 'procedure_name|function_name';

修改儲存過程:

alter procedure 更改create procedure

alter procedure procedure_name(parameter type)

characteristic

routine body;

刪除儲存過程:

drop procedure procedure_name;

建立儲存函式:

create function function_name(in|out|inout parameter type)

characteristic

routine body

characteristic:儲存函式特性

language sql:mysql軟體預設值,表示routine body包含sql語言

[not] determinister:執行結果是否確定

contain sql:預設值,包含sql語句但是不包含寫資料的語言

no sql:不包含sql語言;

reads sql data :包含讀資料的語言;

modifies sql data:包含寫資料的語言;

檢視儲存過程和函式:

1、通過show status 檢視儲存過程和函式的狀態:

show  procedure|function status like'pro_name|func_name';

2、通過show create procedure|function 檢視建立過程的定義資訊:

show create procedure | function  pro_name|func_name;

3、通過系統資料庫information_schema中的系統表routines檢視所有資訊:

select * from information_schema.routines where routine_name='routine_name';

條件結構:

if then else endif;

迴圈結構:

loop:

end loop;

修改儲存過程和函式:

alter procedure|function pro_name|func_name characteristic;

mysql 過程和函式 MySQL 儲存過程和函式

變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...

MySQL儲存過程和儲存函式

儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...

Mysql 儲存過程和函式

一 儲存過程 procedure 本質上沒區別,執行的本質都一樣。只是函式有如 只能返回乙個變數的限制。而儲存過程可以返回多個。函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程要讓sql的query 可以執行,需要把 mysql real connect 的最後乙個引數設定為cl...