含義:一組預先編譯好的sql語句的集合,理解成批處理語句
好處: 1、提高**的重用性
2、簡化操作
3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率
儲存過程與函式的區別:
關鍵字 呼叫語法 返回值 應用場景
儲存過程: procedure call 儲存過程() 可以有0個或多個返回 用於做批量插入和更新(即增刪改)
函式: function select函式() 有且僅有1個返回 用於做處理資料後返回乙個結果
一、建立函式
語法:create function 函式名(引數列表) retrurns 返回型別
begin
函式體end
注意:引數列表包含兩部分:
引數名 引數型別
函式體:肯定會有return語句,如果沒有會報錯
如果return語句沒有放在函式體的最後也不會報錯,但不建議
return值;(建議放最後)
函式體中僅有一句話,則可以省略begin end
使用delimiter語句設定結束標記
學過的函式:length、substr、concat等
二、呼叫語法
語法:select 函式名(引數列表)
即執行函式中的所有語句,並顯示返回值
#函式的使用(案例演示)
無參有返回
#返回公司的員工個數
注:mysql的設定預設是不允許建立函式
這是我們開啟了bin-log, 我們就必須指定我們的函式是否是
1 .deterministic 不確定的
2 .no sql 沒有sql語句,當然也不會修改資料
3 .reads sql data 只是讀取資料,當然也不會修改資料
4. modifies sql data 要修改資料
5. contains sql 包含了sql語句
其中在function裡面,只有 deterministic, no sql 和 reads sql data 被支援。如果我們開啟了 bin-log, 我們就必須為我們的function指定乙個引數。
在mysql中建立函式時出現這種錯誤的解決方法:
set global log_bin_trust_function_creators=true;
或執行:
set global log_bin_trust_function_creators=1;
declare c int default 0;→定義區域性 變數
select count(*) into c →賦值
三、檢視函式
show create function myf1;
四、刪除函式
drop function myf3;
MYSQL儲存過程的建立 呼叫和檢視
create definer procedure sp name proc parameter characteristic routine body proc parameter in out inout param name type characteristic comment string ...
MySQL 儲存過程 建立 檢視 呼叫 刪除
建立 delimiter create procedure my add in a int,in b int,out c int begin if a is null then set a 0 end if if b is null then set b 0 end if set c a b end...
perf檢視函式呼叫
前一段使用perf檢視程式的熱點以及函式呼叫,一直看不到熱點函式的函式呼叫,很是奇怪,在網上問別人,別人都說沒問題,一度很是迷惑。後來又試了一下,結果就出現了,很是神奇。使用方法很簡單,就是perf record加上 g選項。另外,perf top也可以檢視程式的熱點,選項是 g。上圖一張,就是以前...