MySQL调用存储过程和函数
存儲(chǔ)過程和函數(shù)有多種調(diào)用方法。存儲(chǔ)過程必須使用call語句調(diào)用,并且存儲(chǔ)過程和數(shù)據(jù)庫相關(guān),如果要執(zhí)行其他數(shù)據(jù)庫中的存儲(chǔ)過程,需要指定數(shù)據(jù)庫名稱。例如call dbname.procname。存儲(chǔ)函數(shù)的調(diào)用與MySQL中預(yù)定義的函數(shù)的調(diào)用方式相同。
1.調(diào)用存儲(chǔ)過程
存儲(chǔ)過程是通過call 語句進(jìn)行調(diào)用的,語法如下:
call sp_name([parameter[,...])call語句調(diào)用一個(gè)先前用create procedure創(chuàng)建的存儲(chǔ)過程,其中sp_name為存儲(chǔ)過程名稱,parameter為存儲(chǔ)過程的參數(shù)。
【例1】定義名為CountProcl的存儲(chǔ)過程,然后調(diào)用這個(gè)存儲(chǔ)過程。
定義存儲(chǔ)過程:
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, 0 rows affected (0.06 sec) mysql> delimiter ;調(diào)用存儲(chǔ)過程:
mysql> call CountProcl (101,@num); Query OK, 1 row affected (0.08 sec)查看返回結(jié)果:
mysql> select @num; +------+ | @num | +------+ | 3 | +------+ 1 row in set (0.00 sec)該存儲(chǔ)過程返回了指定s_id=101的水果商提供的水果種類,返回值存儲(chǔ)在num變量中,使用select查看,返回結(jié)果為3。
2.調(diào)用存儲(chǔ)函數(shù)
在MySQL中,存儲(chǔ)函數(shù)的使用方法與MySQL內(nèi)部函數(shù)的使用方法是一樣的。即用戶自定義的存儲(chǔ)函數(shù)與MySQL內(nèi)部函數(shù)是一個(gè)性質(zhì)的。
【例2】定義存儲(chǔ)函數(shù)CountProc2,然后調(diào)用這個(gè)函數(shù),代碼如下:
mysql> delimiter // mysql> create function CountProc2 (sid int)-> returns int-> begin-> return (select count(*) from fruits where s_id = sid);-> end// Query OK, 0 rows affected (0.06 sec)mysql> delimiter ;調(diào)用存儲(chǔ)函數(shù):
mysql> delimiter ; mysql> select CountProc2(101); +-----------------+ | CountProc2(101) | +-----------------+ | 3 | +-----------------+ 1 row in set (0.05 sec)可以看到,該例與上一個(gè)例子中返回的結(jié)果相同,雖然存儲(chǔ)函數(shù)和存儲(chǔ)過程的定義稍有不同,但可以實(shí)現(xiàn)相同的功能。
總結(jié)
以上是生活随笔為你收集整理的MySQL调用存储过程和函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机的存储单位
- 下一篇: mysql数据库的注释语句是_codin