mysql中的過程和函式

2021-08-02 10:05:30 字數 2236 閱讀 4452

1 建立儲存過程和函式

建立儲存過程和函式的create語法規範如下:

create

[definer = ] ##很多時候不需要特別宣告

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

[characteristic ...] routine_body

create

[definer = ]

function sp_name ([func_parameter[,...]]) ##輸入引數

returns type ## 宣告返回值

[characteristic ...] routine_body

proc_parameter:

[ in | out | inout ] param_name type ##宣告輸入輸出引數

func_parameter:

param_name type ##輸入引數,由於其輸出參與已經在return中宣告,不需要再指定

type:

any valid mysql data

type

characteristic:

comment

'string'

| language sql

| [not] deterministic ##預設為not dterministic

| | sql security

routine_body:

valid sql routine statement

如果沒有宣告[not] deterministic選項,則mysql預設的選項為not deterministic,意味著mysql針對deterministic的優化器不會開啟。因此這個選項需要特別注意的寫上。

但是僅有create語句是不夠的,一般建立過程和函式有一下3個步驟:

a 修改delimiter

b create語句+begin...end語句 作為儲存過程和函式的主體部分

c 恢復原有的delimiter

如 官方文件中建立儲存過程的例項:

mysql> delimiter //

mysql> create

procedure ******proc (out param1 int)

-> begin

-> select

count(*) into param1 from t;

-> end//

query ok, 0

rows affected (0.00 sec)

mysql> delimiter ;

建立函式的示例:

mysql> delimiter //

mysql> create

function hello (s char(20))

mysql> returns char(50) deterministic

-> return

concat('hello, ',s,'!');

query ok, 0

rows affected (0.00 sec)

mysql> delimiter ;

2 呼叫方法

call sp_name([parameter[,...]])

call sp_name[()]

3 檢視狀態

show  status [like

'pattern']

或者:show create sp_name

或者從information_schema.routines表中檢視

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

4 修改

alter    sp_name [characteristic ...]

5 刪除

drop  [if

exists] sp_name

6 過程和函式的好處

可以參見博文利用mysql的儲存過程比單獨執行mysql的優勢在**?好處有什麼?

簡單說起來主要是:可復用,高效率,省流量,更安全。

MySQL中的儲存過程和函式

這幾天學了儲存過程和函式,總結的不是太完整,先記下來。儲存過程 含義 一組經過預先編譯的sql語句的集合 好處 1 提高了sql語句的重用性,減少了開發程式設計師的壓力 2 提高了效率 3 減少了傳輸次數 分類 1 無返回無參 2 僅僅帶in型別,無返回有參 3 僅僅帶out型別,有返回無參 4 既...

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

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

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

乙個儲存程式是可以被儲存在伺服器中的一套sql語句。可以通過客戶端用create procedure和create function 建立乙個儲存過程或函式。在客戶端通過call語句 呼叫所建立的存數過程或函式。語法 建立儲存子程式 create procedure sp name proc par...