MySQL呼叫儲存過程和函式

2021-09-26 18:19:55 字數 2020 閱讀 4281

儲存過程和函式有多種呼叫方法。儲存過程必須使用call語句呼叫,並且儲存過程和資料庫相關,如果要執行其他資料庫中的儲存過程,需要指定資料庫名稱。例如call dbname.procname。儲存函式的呼叫與mysql中預定義的函式的呼叫方式相同。

1.呼叫儲存過程

儲存過程是通過call 語句進行呼叫的,語法如下:

call sp_name(

[parameter[,.

..])

call語句呼叫乙個先前用create procedure建立的儲存過程,其中sp_name為儲存過程名稱,parameter為儲存過程的引數。

【例1】定義名為countprocl的儲存過程,然後呼叫這個儲存過程。

定義儲存過程:

mysql>

delimiter

//mysql>

create

procedure countprocl(

in sid int

,out num int)-

>

begin

->

select

count(*

)into num from fruits where s_id = sid;

->

end//

query ok,

0rows affected (

0.06 sec)

mysql>

delimiter

;

呼叫儲存過程:

mysql>

call countprocl (

101,

@num);

query ok,

1row affected (

0.08 sec)

檢視返回結果:

mysql>

select

@num;+

------+

|@num|+

------+|3

|+------+

1row

inset

(0.00 sec)

該儲存過程返回了指定s_id=101的水果商提供的水果種類,返回值儲存在num變數中,使用select檢視,返回結果為3。

2.呼叫儲存函式

在mysql中,儲存函式的使用方法與mysql內部函式的使用方法是一樣的。即使用者自定義的儲存函式與mysql內部函式是乙個性質的。

【例2】定義儲存函式countproc2,然後呼叫這個函式,**如下:

mysql>

delimiter

//mysql>

create

function countproc2 (sid int)-

>

returns

int-

>

begin

->

return

(select

count(*

)from fruits where s_id = sid);-

>

end//

query ok,

0rows affected (

0.06 sec)

mysql>

delimiter

;

呼叫儲存函式:

mysql>

delimiter

;mysql>

select countproc2(

101);+

-----------------+

| countproc2(

101)|+

-----------------+|3

|+-----------------+

1row

inset

(0.05 sec)

可以看到,該例與上乙個例子中返回的結果相同,雖然儲存函式和儲存過程的定義稍有不同,但可以實現相同的功能。

mysql 過程和函式 MySQL 儲存過程和函式

變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...

mysql定義和呼叫儲存過程

定義delimiter為 delimiter create procedure sp add3 a int,b int,out c int begin set c a b end 改回預設值 delimiter call sp add3 1,2,c select c set attr contact...

MySQL儲存過程和儲存函式

儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...