儲存過程
類似函式:批量處理
1、 為什麼使用
mysql伺服器在快取機制做了改進,使用類似預處理的那種方式,由於沒有編譯器,
因此mysql儲存過程不會像外部語言(c)編寫的程式執行的那麼快。提公升速度最主要的方法有兩種:降低網路的資訊流量,減少使用者與伺服器之間的互動;
因為儲存過程是在伺服器端執行,所以使用儲存過程就會減少客戶與伺服器之間的資訊量。
改變主機語言也可以,儲存過程只是資料庫邏輯而不是應用程式,可移植性好,和作業系統、主機型號等無關;
2、 要求:
proc表
具有create routine(例程)的許可權
返回標量值
隱含呼叫use 庫名,刪除資料庫,儲存過程也被刪除
3、 語法格式
create procdure 儲存過程名(引數)
特徵描述
sql語句體
4、 例如
1) use test;
2) create procedure p1()
begin
/*this is my first procedure*/
end;
注意:begin。。。end相當於{}的作用
如果sql語句體只有一句可以省略begin。。end
名稱不區分大小寫,盡量避免與內建函式同名,假如同名則在名稱和()之間加空格;
名稱長度限制64字元;
()可以為空,不能省略
通常select不會出現在儲存過程體內
大部分的ddl、dml都是合法語句
非法語句:
create procedure db.p() drop database db;
含有use 庫名等
3) 呼叫儲存過程
call 儲存過程名(…);
4)帶有描述資訊的儲存過程
create procedure p3()
language sql ----宣告用什麼語言來實現儲存過程
目前只支援sql語句,將來可能會使用php
來代替sql
not deterministic---返回的結果不確定
sql security definer----建立者
comment 『 a procedure』---給儲存過程加注釋
select * 。。。------sql 語句體;
4) 當語句體內容兩條以上,結束符號
sql;
create procedure p4()
begin
select * from tb1;--會給出錯誤提示,直接結束儲存過程的宣告
select * from tb2;
end;
delemiter---宣告結束符
delemiter //
select * from tb1//
引數 : [in|out|inout] 參變數 資料型別
declare :宣告儲存過程的區域性變數
1)第一種方法:分兩步實現
declare 變數名 資料型別;宣告
定義的變數不進行初始化,預設為null,該值進行的所有操作
結果都為空;
set 變數=值 (也可以是表示式); 賦值
2)第二種方法:
也可用同一條語句完成變數的宣告和初始化
declare 變數名 資料型別 default 值;
儲存過程的理解
1.什麼是儲存過程?儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。通俗來講 儲存過程其實就是能完成一定操作的一組sql語句。2.儲存過程的優點和缺點 優點 響應時間上來說有優勢,可以給我們帶來執行效率提高的好處,且使用儲存過程的系統更加穩定。缺點 維護性較差,相對於簡單sql,儲存...
儲存過程的理解
1.什麼是儲存過程?儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。通俗來講 儲存過程其實就是能完成一定操作的一組sql語句。2.儲存過程的優點和缺點 優點 響應時間上來說有優勢,可以給我們帶來執行效率提高的好處,且使用儲存過程的系統更加穩定。缺點 維護性較差,相對於簡單sql,儲存...
儲存過程的理解
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效...