MySQL的儲存過程(二)

2021-08-28 13:33:25 字數 1379 閱讀 6122

characteristic特徵值:

(1)language sql:

說明下面過程的body是適用sql語言編寫,這條是系統預設的,為今後mysql會支援的除sql外的其他語言支援的儲存過程而準備。

(3):這些特徵值提供子程式使用資料的內在資訊,這些特徵值目前只是提供給伺服器,並沒有根據這些特徵值來約束過程過程實際使用資料的情況。

contains  sql : 表示子程式不包含讀或寫資料的語句

no  sql:表示子程式不包含sql語句

reads sql  data:表示子程式包含讀資料的語句,但不包含寫資料的語句。

modifies  sql  data :表示子程式包含寫資料的語句。

預設使用的值:contains  sql

(4)comment 『string』 : 儲存過程或者函式的注釋資訊

(4)sql  secutrity:

用來指定子程式的使用許可權,definer是建立子程式者的許可來執行,invoker 是使用呼叫者的許可來執行。

create procedure  film_in_stock_definer(

in p_film_id int,

in p_store_id int,

out p_film_count int)

sql  security  definer   #任何使用者呼叫該儲存過程都是以建立者的許可權去查詢

begin

select inventory_id

from   inventory

where  film_id=p_film_id

and  store_id=p_store_id

and  inventory_in_stock(inventory_id)

select  found_rows()  into  p_film_count;

end $$

create procedure  film_in_stock_definer(

in p_film_id int,

in p_store_id int,

out p_film_count int)

sql  security  invoker   #以使用者呼叫該儲存過程,是以本身的許可權去查詢,可能被拒絕。

begin

select inventory_id

from   inventory

where  film_id=p_film_id

and  store_id=p_store_id

and  inventory_in_stock(inventory_id)

select  found_rows()  into  p_film_count;

end $$

注意:最常用的

Mysql儲存過程 二

why mysql statements are legal in a procedure body 什麼mysql語句在儲存過程體中是合法的?什麼樣的sql語句在mysql儲存過程中才是合法的呢?你可以建立乙個包含insert,update,delete,select,drop,create,re...

mysql 《二》儲存過程

create procedure 過程名 in out inout 引數名 資料型別 in out inout 引數名 資料型別 begin 過程體delimiter create procedure testpro out s int begin select count into s from ...

MySQL儲存過程的學習(二)

在 一 中完成了對儲存過程的增刪改查,接下來學習下怎麼使用儲存過程 1.儲存過程的呼叫 無參 儲存過程呼叫的時候使用的call 語法為call procedure name 如 call proc demo 2.儲存過程的呼叫 帶參 語法為call procedure name 引數列表 首先建立乙...