1.使用者變數:以」@」開始,形式為」@變數名。」
使用者變數跟mysql客戶端是繫結的,設定的變數,只對當前使用者使用的客戶端生效,使用如下圖:
2.全域性變數:定義時,以如下兩種形式出現,set global 變數名 或者 set @@global.變數名。show global variables;
對所有客戶端生效。只有具有super許可權才可以設定全域性變數。
3.會話變數:只對連線的客戶端有效。一旦客戶端失去連線,變數失效。show session variables;
4.區域性變數:作用範圍在begin到end語句塊之間。在該語句塊裡設定的變數declare語句專門用於定義區域性變數。declare l_numeric number(8,2) default 9.95;
全域性變數和會話變數的區別:全域性變數在mysql啟動的時候由伺服器自動將它們初始化為預設值,這些預設值可以通過更改my.ini這個檔案來更改。會話變數在每次建立乙個新的連線的時候,由mysql來初始化。mysql會將當前所有全域性變數的值複製乙份。來做為會話變數。全域性變數與會話變數的區別就在於,對全域性變數的修改會影響到整個伺服器,但是對會話變數的修改,只會影響到當前的會話(也就是當前的資料庫連線)。非root使用者在修改全域性變數時會報沒有許可權,在修改會話變數時也需要注意,有些變數是不能修改的,只能由root使用者進行修改,例如:event_scheduler。
儲存過程增強了sql語言的功能和靈活性。儲存過程可以用流控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。
當sql語句有變動時,可以只修改資料庫中的儲存過程而不必修改**。
儲存過程能實現較快的執行速度。如果某一操作包含大量的sql**或分別被多次執行,那麼儲存過程要比批處理的執行速度快很多。因為儲存過程是預編譯的。在首次執行乙個儲存過程時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計畫。而批處理的sql語句在每次執行時都要進行編譯和優化,速度相對要慢一些。
減少網路傳輸。在客戶端呼叫乙個儲存過程當然比執行一串sql傳輸的資料量要小。
儲存過程可被作為一種安全機制來充分利用。系統管理員通過執行某一儲存過程的許可權進行限制,能夠實現對相應的資料的訪問許可權的限制,避免了非授權使用者對資料的訪問,保證了資料的安全。
mysql儲存過程的引數用在儲存過程的定義,共有三種引數型別,in,out,inout,形式如:
create procedure([[in |out |inout ] 引數名 資料型別…])
in 輸入引數:表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值
out 輸出引數:該值可在儲存過程內部被改變,並可返回
inout 輸入輸出引數:呼叫時指定,並且可被改變和返回
標號可以用在begin repeat while 或者loop 語句前,語句標號只能在合法的語句前面使用。可以跳出迴圈,使執行指令達到復合語句的最後一步。如上面的loop示例。
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...
mysql 儲存過程 MySQL儲存過程
目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...