6.5.1 存储过程的创建

6.5.1 存储过程的创建

MySQL创建存储过程使用create procedure语句实现,具体格式是:

语法说明:

存储过程名:存储过程名必须符合标识符命名规则,默认在当前数据库中创建,若要将其创建到其他数据库中,则需在存储过程名前添加数据库名。存储过程名在其所在的数据库中必须唯一。

存储过程的参数:一般由三部分组成。第一部分是输入输出类型,第二部分为参数名,第三部分为参数的类型,该类型为MySQL数据库中所有可用的字段类型,如果有多个参数,参数之间可以用逗号进行分割。

存储过程参数类型共有3种:

①in类型参数:输入类型参数,表示向存储过程中传入参数,参数的值在调用存储过程时由调用程序给定。在存储过程中修改该参数的值不能被返回。默认为传入参数。即in可以省略。

②out参数:输出类型参数,表示该参数可在存储过程内部被改变,可把存储过程计算后的结果带给调用程序。

③inout参数:输入/输出类型参数,表示该参数即可将调用程序的值传递给存储过程,又可被改变和返回。

存储过程选项:设置存储过程的某些特征设定,可省略。

•comment:用于对存储过程的描述,其中string为描述内容,comment为关键字。

•lanague SQL:指明编写这个存储过程的语言为SQL语言。这个选项可以不指定。

•deterministic:表示存储过程对同样的输入参数产生相同的结果;not deterministic,则表示会产生不确定的结果(默认)。

•contains sql|no sql|reads sql data|modifies sql data:表示存储过程包含读或写数据的语句(默认)。

no sql:表示不包含SQL语句。

reads sql data:表示存储过程只包含读数据的语句。

modifies sql data:表示存储过程只包含写数据的语句。

过程体:存储过程的主体部分,包含了在过程调用时必须执行的SQL语句。以begin开始,以end结束。如果存储过程体中只有一条SQL语句,可以省略begin-end标志。

【例6.24】输入类型参数的应用,定义一个存储过程proc_in,具有一个整型的输入类型参数,接收调用者传递的数值,并将其数值扩大2倍,并查看输入参数的值。

【例6.25】输出类型参数的应用,定义一个存储过程proc_out,具有一个整型的输入类型参数和一个整型的输出类型参数,将输入参数的值扩大三倍后存入输出类型参数中。

【例6.26】输入/输出类型参数应用,定义一个存储过程proc_inout。具有一个整型的输入/输出类型参数,接收用户输入的整型数n,并通过该参数将从1到n的和带回。