MySQL4:存储过程和函数
<span style="color: #0000ff;">use<span style="color: #000000;"> school; <span style="color: #0000ff;">create <span style="color: #0000ff;">table<span style="color: #000000;"> student ( studentId <span style="color: #0000ff;">int <span style="color: #0000ff;">primary <span style="color: #0000ff;">key auto_increment <span style="color: #808080;">not <span style="color: #0000ff;">null<span style="color: #000000;">,studentName <span style="color: #0000ff;">varchar(<span style="color: #800000; font-weight: bold;">10) <span style="color: #808080;">not <span style="color: #0000ff;">null<span style="color: #000000;">,studentAge <span style="color: #0000ff;">int<span style="color: #000000;">,studentPhone <span style="color: #0000ff;">varchar(<span style="color: #800000; font-weight: bold;">15<span style="color: #000000;">) ) <span style="color: #0000ff;">insert <span style="color: #0000ff;">into student <span style="color: #0000ff;">values(<span style="color: #0000ff;">null,<span style="color: #ff0000;">'<span style="color: #ff0000;">Betty<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">20<span style="color: #ff0000;">',<span style="color: #ff0000;">'<span style="color: #ff0000;">00000000<span style="color: #ff0000;">'<span style="color: #000000;">);
创建存储过程 sp_name() routine_body 解释一下: 1、CREATE PROCEDURE为创建存储过程的关键字 2、sp_name为存储过程的名字 3、proc_parameter为指定存储过程的参数列表,列表形式为[IN|OUT|INOUT] param_name type。其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出,param_name表示参数名称,type表示参数类型,该类型可以是MySQL数据库中的任意类型 4、characteristics指定存储过程的特性 5、routime_body是SQL代码的内容,可以用BEGIN...END来表示SQL代码的开始和结束 (studentAge) avgAge 上面都是不带参数的存储过程,下面看一个带参数的存储过程: DELIMITER CountStudent( sName (),OUT num () num student studentName
func_name() routine_body 解释一下: 1、CREATE_FUNCTION为用来创建存储函数的关键字 2、func_name表示存储函数的名称 3、func_parameter为存储过程的参数列表,参数列表形式为[IN|OUT|INOUT] param_name type,和存储过程一样 4、RETURNS type表示函数返回数据的类型 5、characteristic表示存储函数的特性,和存储过程一样 举个例子: NameByZip() ( ( studentPhone student studentName );提两点: 1、如果在存储函数中的RETURN语句返回一个类型不同于函数的RETURNS自居指定的类型的值,返回值将被强制为恰当的类型 2、指定参数为IN、OUT或INOUT只对PROCEDURE是合法的(FUNCTION中总是默认为IN参数)。RETURNS子句只能对FUNCTION做指定,对于函数而言这是强制性的,它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句
变量可以在子程序中声明并使用,这些变量的作用范围是在BEGIN...END程序中,在存储过程中可以使用DECLARE语句定义变量,语法如下: var_name... date_type解释一下: 1、var_name为局部变量的名称 2、DEFAULT value子句给变量提供一个默认值,值除了可以被声明为一个常数之外,还可以被指定为一个表达式。如果没有DEFAULT子句,那么初始值为NULL 定义变量后,为变量赋值可以改变变量的默认值,MySQL使用SET为变量赋值: var_nameexpr ...;举个例子: var1 var2,var3,var4 var2 ,var3 var4 var2 var3;t_studentName ( t_studentAge studentName,studentId t_studentName,t_studentAge student studentName ; t_studentName ( t_studentAge
cursor_name 解释一下: 1、cursor_name表示游标的名称 2、select_statement表示SELECT语句返回的内容,返回一个用于创建游标的结果集 定义了游标,就要打开游标,打开游标的方法为: 再就是使用游标了,使用游标的方法为: cursor_name var_name
t_studentName ( t_studentAge cur_student studentName,studentId student studentName cur_student cur_student; studentName为Bruce的在数据里面不止一条记录,创建游标之后就从student表中查出了studentName和studentId的值。OPEN这个游标,通过FETCH之后遍历每一组studentName和studentAge,并放入申明的变量t_studentName和t_studentAge中,之后想怎么用这两个字段怎么用这两个字段了。注意,游标用完关闭掉。
expr_condition 比如: t_studentName studentName t_studentName student studentName studentName student studentName ;
when_value 其中,case_expr参数表示判断的表达式,决定了哪一个WHEN自居会被执行;when_value表示表达式可能的值,如果某个when_value表达式与case_expr表达式结果相同,则执行对应THEN关键字后的statement_list中的语句;statement_list参数表示不同when_value值的执行语句。 CASE语句的第二种格式为: expr_condition只是写法稍微变了一下,参数还是第一种写法的意思
LOOP
6、REPEAT REPEAT
CALL sp_name( 举个例子,就调用最前面那个CountStudent的存储过程: CALL CountStudent(, ;
查看存储过程和函数的状态 SHOW { } STATUS 这个语句是一个MySQL的扩展,他返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,根据使用的语句,所有存储过程或存储函数的信息都被列出。PROCEDURE和FUNCTIOn分别表示查看存储过程和函数,LIKE语句表示匹配存储过程或函数的名称。 举个例子: SHOW
2、查看存储过程和函数的定义 SHOW { } sp_name SHOW NameByZip
|