在资料库管理系统的应用中,不论是一般或网页的应用程式,它们在执行资料查询与维护的时候,都必须使用SQL叙述来请资料库执行各种不同的工作。在比较复杂的应用程式需求下,很常会遇到类似下列的一组工作:
SQL叙述的特点是一次只能执行一件工作,所以要完成上列的工作,就必须执行数个SQL叙述。如果这样的一组工作是很常执行的,你就可以考虑把这些要执行的叙述建立为「Stored procedure」元件:
把这一组工作建立为Stored procedure元件以后,以后要执行这些工作时,就可以「呼叫、call」这个建立好的Stored procedure元件:
要建立人口数比「USA」多的国家表格时,只要传入指定的国家代码就可以了:
Stored procedures是Stored routines其中一种元件,你可以视需要在资料库中建立许多不同用途的Stored procedure。它可以包含你需要执行的一组工作,也可以依照需求设定必要的参数资料(例如上列「new_mycountry」中的国家代码)。呼叫这些建立好的Stored procedure可以帮你省掉很多繁复的工作,请资料库一次完成你要执行的工作。
Stored routines另外提供一种「Stored functions」元件,除了MySQL资料库提供许多各种不同的函式外,你也可以建立自己的函式,这种函式称为Stored functions。例如下列的范例:
你可以自己建立一个名称为「ROUND2」的Stored functions,这个函式固定将一个指定的数值四舍五入到小数两位:
建立好需要的Stored function元件以后,它使用起来就跟你在使用MySQL提供的函式一样:
你同样可以在资料库中建立许多需要的Stored functions,把一些比较复杂工作建立为Stored functions元件以后,你就可以跟使用MySQL提供的函式一样来使用它们,同样可以简化许多繁复的工作。
在MySQL资料库管理系统中,把Stored procedures与Stored functions合称为「Stored routines」。在后续的内容中,会把Stored procedures简称为「procedures」;把Stored functions简称为「functions」。
Stored procedures元件也是一种可以建立、维护与删除的资料库元件。表格元件是用来储存资料用的;索引元件是储存索引与增加效率用的;而Stored procedures元件是用来「储存程序」用的,程序表示一组特定的工作,如果在使用资料的过程中,常常需要执行一组同样的工作,你就可以考虑把执行工作需要的叙述建立为Stored procedures元件。
下列是建立Stored procedures元件的基本语法:
下列是删除Stored procedures元件的基本语法:
下列是呼叫Stored procedures元件的基本语法:
如果MySQL提供的函式无法完成你的工作,或是想要改善一些比较复杂的叙述,你都可以建立需要的Sotred functions元件。跟Stored procedures一样,它也是一种用来「储存程序」的元件,不过建立好的Stored procedures元件要使用「CALL」来呼叫,也就是请资料库执行储存在Stored procedures中的工作;要使用建立好的Stored functions元件,就跟使用MySQL提供的函式一样来使用它们。
下列是建立Stored functions元件的基本语法:
下列是删除Stored functions元件的基本语法: