儲存過程(stored procedure)是一種在資料庫中儲存多條語句,以便呼叫的一種資料庫物件。儲存過程可以完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。
簡單來說,當我們需要完成同樣的任務反覆呼叫一組語句時,就可以把這組語句封裝成乙個儲存過程,後續呼叫方便快捷,功能類似於函式。
既然儲存類似函式,必定涉及引數,儲存的引數有三種,
in 輸入引數用乙個簡單的student表舉例:out 輸出引數
inout 輸入輸出都可以的引數
mysql>
select
*from student;
+-------+--------+-------+
| s_num | s_name | s_*** |
+-------+--------+-------+
|101
| tom | m |
|102
| sam | m |
+-------+--------+-------+
為了區別儲存過程的終止, 和儲存內語句的終止,需要設定乙個終止符,語法是delimiter $
建立儲存的語法的如下
1 不含引數型別的儲存
mysql>
create
procedure test1(
)--建立乙個無引數儲存
->
begin
->
select
*from student where s_*** =
'm';
->
select
*from student where s_name =
'tom';-
>
end$
query ok,
0rows affected (
0.04 sec)
呼叫儲存過程語法為 call procedure_name()
mysql>
call test1()$+
-------+--------+-------+
| s_num | s_name | s_*** |
+-------+--------+-------+
|101
| tom | m |
|102
| sam | m |
+-------+--------+-------+
2rows
inset
(0.00 sec)
+-------+--------+-------+
| s_num | s_name | s_*** |
+-------+--------+-------+
|101
| tom | m |
+-------+--------+-------+
1row
inset
(0.00 sec)
query ok,
0rows affected (
0.01 sec)
2包含in 型別引數的儲存(in 是引數預設型別)
mysql>
create
procedure test2(
in num int(4
),in name varchar(20
),in *** varchar(20
))--建立乙個插入資料的儲存--
->
begin
->
insert
into student values
( num, name , *** );-
>
end $
query ok,
0rows affected (
0.08 sec)
mysql>
call test2(
103,
'jack'
,'m'
)$ --呼叫test2 新增資料--
query ok,
1row affected (
0.07 sec)
mysql>
select
*from student$ --檢視執行結果--
+-------+--------+-------+
| s_num | s_name | s_*** |
+-------+--------+-------+
|101
| tom | m |
|102
| sam | m |
|103
| jack | m |
+-------+--------+-------+
3rows
inset
(0.00 sec)
建立含有out引數的儲存
mysql>
create
procedure test3(
in name varchar(20
),out num int(4
))--輸出學生姓名, 返回學生學號--
->
begin
->
select s_num into num from student where s_name = name ;
->
end $
query ok,
0rows affected (
0.06 sec)
mysql>
call test3(
'jack'
,@num
) $ -- 呼叫test3, 查詢 jack 的學號,放在使用者變數 num 中--
query ok,
1row affected (
0.00 sec)
mysql>
select
@num $
+------+
|@num|+
------+
|103|+
------+
1row
inset
(0.00 sec)
建立含有inout引數的儲存
mysql>
create
procedure test4(
inout a int(4
))-- 輸入輸出都是引數a--
->
begin
->
set a = a *2;
-- 讓變數a 擴大兩倍--
->
end $
query ok,
0rows affected (
0.09 sec)
mysql>
set@a
=4$ --建立乙個使用者變數a
query ok,
0rows affected (
0.00 sec)
mysql>
call test4(
@a) $ -- 呼叫test4 處理a --
query ok,
0rows affected (
0.00 sec)
mysql>
select
@a $ -- 檢視結果
+------+|@a
|+------+|8
|+------+
1row
inset
(0.00 sec)
mysql>
drop
procedure test1$ --為了資料安全考慮, 每次只能刪除乙個儲存--
query ok,
0rows affected (
0.11 sec)
儲存不提供修改 , 需要修改可以刪除再重新建立乙個儲存
這就是「愛情」,這就是「婚姻!」
有一天,柏拉圖問老師蘇格拉底什麼是愛情?老師就讓他先到到麥田裡去,摘一棵全麥田裡最大最金黃的麥穗來,期間只能摘一次,並且只可向前走,不能回頭。柏拉圖於是按照老師說的去做了。結果他兩手空空的走出了田地。老師問他為什麼摘不到?他說 因為只能摘一次,又不能走回頭路,期間即使見到最大最金黃的,因為不知前面是...
這就是男人 (續)
調教好男人標準之一 成熟穩重。的確,成熟的男人勇於承擔責任,雖然有些過錯並非是他們造成的,過於計較是男人最不能原諒的錯誤,正好,女人們,平時撒嬌就有這個藉口了。好男人即使知道錯的並不是他,可他也會拿出男子的紳士風度讓你感覺你找到了安全的港灣。他會讓你體會到小女人的幸福,疼著你,寵著你。永遠讓你感覺生...
這就是差距啊。。。
這段時間應一位同學的請求,做了個吃豆子遊戲。關於吃豆子遊戲應該說是很簡單了吧?儘管如此,我總是發現我做的遊戲為什麼就是不如先前那個叫clanlib中的吃豆子遊戲例子來得流暢。不爽啊 除了繪畫的api不相同以及不一樣之外,演算法基本上都是一樣的啊。就連人物的移動速度都調節成一樣了,雖然對於任務來說是關...