儲存過程和函式有多種呼叫方法。儲存過程必須使用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引數返回多個值。函式是...