mysql這就是儲存

2021-10-08 11:17:46 字數 4238 閱讀 1197

儲存過程(stored procedure)是一種在資料庫中儲存多條語句,以便呼叫的一種資料庫物件。儲存過程可以完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。

簡單來說,當我們需要完成同樣的任務反覆呼叫一組語句時,就可以把這組語句封裝成乙個儲存過程,後續呼叫方便快捷,功能類似於函式。

既然儲存類似函式,必定涉及引數,儲存的引數有三種,

in 輸入引數

out 輸出引數

inout 輸入輸出都可以的引數

用乙個簡單的student表舉例:

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不相同以及不一樣之外,演算法基本上都是一樣的啊。就連人物的移動速度都調節成一樣了,雖然對於任務來說是關...