mysql存儲過程教程-九游会j9娱乐平台
.關於mysql的存儲過程
存儲過程是資料庫存儲的一個重要的功能,但是mysql在5.0以前並不支持存儲過程,這使得mysql在應用上大打折扣。好在mysql 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。
mysql存儲過程的創建
(1).格式
mysql存儲過程創建的格式:create procedure過程名([過程參數[,...]])
[特性...]過程體
這里先舉個例子:
mysql>delimiter//
mysql>createprocedureproc1(outsint)
->begin
->selectcount(*)intosfromuser;
->end
->//
mysql>delimiter;
- 註:
(1)這里需要注意的是delimiter //和delimiter ;兩句,delimiter是分割符的意思,因為mysql默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成sql語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用delimiter關鍵字申明當前段分隔符,這樣mysql才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。
(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
(3)過程體的開始與結束使用begin與end進行標識。
㈡ mysql如何創建存儲過程
1 用mysql客戶端登入
2 選擇資料庫
mysql>use test
3 查詢當前資料庫有哪些存儲過程
mysql>show procere status where db='test'
4 創建一個簡單的存儲過程
mysql>create procere hi() select 'hello';
5 存儲過程創建完畢,看怎麼調用它
mysql>call hi();
顯示結果 mysql> call hi();
-------
| hello |
-------
| hello |
-------
1 row in set (0.00 sec) query ok, 0 rows affected (0.01 sec)
6 一個簡單的儲存過程就成功了
㈢ mysql存儲過程怎麼寫
mysql 存儲過程是一些 sql 語句的集合,比如有的時候我們可能需要一大串的 sql 語句,或者說在編寫 sql 語句的過程中還需要設置一些變數的值,這個時候我們就完全有必要編寫一個存儲過程。下面我們來介紹一下如何創建一個存儲過程。
語法格式:
可以使用 create procedure 語句創建存儲過程。
語法格式如下:
create procedure <過程名> ( [過程參數[,?] ] ) <過程體>
[過程參數[,?] ] 格式
[ in | out | inout ] <參數名> <類型>語法說明如下:
1) 過程名
存儲過程的名稱,默認在當前資料庫中創建。若需要在特定資料庫中創建存儲過程,則要在名稱前面加上資料庫的名稱,即 db_name.sp_name。需要注意的是,名稱應當盡量避免選取與 mysql 內置函數相同的名稱,否則會發生錯誤。
2) 過程參數
存儲過程的參數列表。其中,<參數名>為參數名,<類型>為參數的類型(可以是任何有效的 mysql 數據類型)。當有多個參數時,參數列表中彼此間用逗號分隔。存儲過程可以沒有參數(此時存儲過程的名稱後仍需加上一對括弧),也可以有 1 個或多個參數。
mysql 存儲過程支持三種類型的參數,即輸入參數、輸出參數和輸入/輸出參數,分別用 in、out 和 inout 三個關鍵字標識。其中,輸入參數可以傳遞給一個存儲過程,輸出參數用於存儲過程需要返回一個操作結果的情形,而輸入/輸出參數既可以充當輸入參數也可以充當輸出參數。需要注意的是,參數的取名不要與數據表的列名相同,否則盡管不會返回出錯信息,但是存儲過程的 sql 語句會將參數名看作列名,從而引發不可預知的結果。
3) 過程體
存儲過程的主體部分,也稱為存儲過程體,包含在過程調用的時候必須執行的 sql 語句。這個部分以關鍵字 begin 開始,以關鍵字 end 結束。若存儲過程體中只有一條 sql 語句,則可以省略 begin-end 標志。
在存儲過程的創建中,經常會用到一個十分重要的 mysql 命令,即 delimiter 命令,特別是對於通過命令行的方式來操作 mysql 資料庫的使用者,更是要學會使用該命令。
在 mysql 中,伺服器處理 sql 語句默認是以分號作為語句結束標志的。然而,在創建存儲過程時,存儲過程體可能包含有多條 sql 語句,這些 sql 語句如果仍以分號作為語句結束符,那麼 mysql 伺服器在處理時會以遇到的第一條 sql 語句結尾處的分號作為整個程序的結束符,而不再去處理存儲過程體中後面的 sql 語句,這樣顯然不行。為解決這個問題,通常可使用 delimiter 命令將結束命令修改為其他字元。
語法格式如下:
delimiter $$語法說明如下:$$ 是用戶定義的結束符,通常這個符號可以是一些特殊的符號,如兩個「?」或兩個「¥」等。當使用 delimiter 命令時,應該避免使用反斜杠「」字元,因為它是 mysql 的轉義字元。
在 mysql 命令行客戶端輸入如下sql語句。
mysql > delimiter ??成功執行這條 sql 語句後,任何命令、語句或程序的結束標志就換為兩個問號「??」了。
若希望換回默認的分號「;」作為結束標志,則在 mysql 命令行客戶端輸入下列語句即可:
mysql > delimiter ;注意:delimiter 和分號「;」之間一定要有一個空格。在創建存儲過程時,必須具有 create routine 許可權。可以使用 show procedure status 命令查看資料庫中存在哪些存儲過程,若要查看某個存儲過程的具體信息,則可以使用 show create procedure <存儲過程名>。
創建不帶參數的存儲過程
存儲過程的作用是從學生成績信息表中查詢學生的成績信息,輸入的 sql 語句和執行過程如下所示。
mysql> delimiter //
mysql> create procedure showstuscore()
-> begin
-> select * from tb_students_score;
-> end //
query ok, 0 rows affected (0.09 sec)