儲存過程的理解與操作

2021-06-16 07:16:35 字數 1728 閱讀 5363

儲存過程

類似函式:批量處理

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 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效...