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 引數列表 首先建立乙...